码迷,mamicode.com
首页 > 编程语言 > 详细

python文件的读写

时间:2018-09-22 18:16:13      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:直接   删除文件   打开   删除   读取   not   append   flush   文件夹   

  1. 打开文件: f = open("文件路径/文件名.文件格式",mode="r",encoding="utf-8") 
    f 可以看成一个可以操作文件的句柄.
    文件路径分: 相对路径,绝对路径.
    相对路径: 相对的是你当前程序所在的文件夹.(如果要从当前文件夹出来用../命令, ../返回上一级目录.)
    绝对路径: 1.从磁盘根睡目录找 2.互联网上的绝对路径.
    还可以用 with open("文件路径",mode="") as f:#此处以,结尾.这个命令可以接多个文件.
    这样打开文件可以不用f.close()关文件.

  2. 读"r".
    f = open("文件名","r")
    ret = f.read()
    f.close()#打开文件进行操作后都要记得关闭.
    在读的模式下没有这个文件会报错.
    f.readline()#读一行,会读取换行,行间有空行是正常的.
    f.readlines()#读取多行,相当于一次全部读出来.
    因为文件句柄本来就是可以迭代器
    所以可以用for循环
    for line in f:
    可以计数来读取想要的行

  3. 写"w".
    f = open("文件名","w",encoding="utf-8")
    f.write("要写入的内容")
    f.flush()#刷新的意思(一种好的习惯而已)
    f.close()
    在写模式下如果当前目录文件不存在会自动创建文件夹并写入内容.(但如果文件名前加了没有存在的路径就不可以,会报错)
    w模式在写入之前会清掉之前的内容.(文件操作只要见到"w"都会这样.)

  4. 追加"a"
    f = open("文件名","a",encoding="utf-8")
    f.write("要写入的内容")#"a"就是append的意思,就是有写文件的时候不会覆盖前面的内容后追加到后面.
    f.flush()
    f.close()
    追加是一种写模式.

  5. "rb"
    f = open("文件名",mode="rb")#此处encoding没用,直接读到的就是字节.
    ret = f.read()
    f.flush()
    f.close()
    print(ret)#结果如‘\xe5\xa5\xbd\xe7\x9a\x84\xe6‘
    print(ret."utf-8")可以用这种方法得到解码的后文件内容.
    b是字节的意思
    即此模式是读取字节(byte)

  6. "wb"
    f = open("文件名","wb")
    f.write("你好")#这样是写不进的,会报错,必须先编码,因为是对字节进行操作.
    f.write("你好".encode="utf-8")#这样先编码才行.
    f.flush()
    f.close()
    因为写进去是字节,在pycharm里用utf-8打开就会还原成原的写了字符.
    见w写入都会被覆盖.

    打开非文本的东西有带"b"的模式,如图片,视频之类的.
    "r" "w" "a"
    "rb" "wb" "ab"

  7. "r+"
    f = open("文件名",mode="r+")#先读后写是对读模式的扩展.
    f.read(3)#如果先写后读,写入的会覆盖之前的(因这光标开始默认在顶格.会从光标所在位置往后写)
    f.write()#此处传参数表示读几个字符(注意:不是字节).#继续读的话光标会接着往后读.
    f.flush()#但是你要写,"r+"模式只要你读一次,不管读几个字节,都会默认光标到末尾.
    f.close()
    这种模式先读后写才是安全的.

  8. "w+"
    f = open("文件名",mode="w+")#先写后读是对写模式的扩展.
    f.write()#只要有w就会先清空原来的内容
    f.read()#此处读的话会读不到内容,因为光标在末尾.要想读到内容要用f.seek()移动光标再读.
    f.flush()
    f.close()
    这种模式一般不用.

  9. "rb+" "wb+" "ab+"就是处理byta的和前面的方法是通的.
  10. 移动光标f.seek()#里面传的参数是表示的"字节".表示将光标移动到什么位置.移动到xx如果是utf-8移动一个字符要移动3个字节
    seek(0)就是移动到开头.
    f.seek(0,2)移动到末尾.#第一个参数表示移动多少字节,第二个参数表示从哪个位置开始偏移0表示的开头,1表示的是当前位置,2表示的是末尾.
    如果你要反复的读就可以用在read()全部读完后,将光标移到开头f.seek(0)重新再读一遍.
    f.tell()#可以获得当前光标所在的位置.
    truncate()截断文件一般用不到.
  11. 文件的修改,不能直接修改文件,一般都是将文件先读取,再修改,再重新写到文件里去.
    把新文件名改成老文件,再把老文件删除来完成文件的修改.
    os.remove("是删除的文件名")#删除文件
    os.rename("是修改的文件名","文件名")#重命名文件
  12. 如果要写入的文件有路径,一般先看路径和文件夹是否存在,如果存在直接写,如果不存在就创建路径和文件夹.
    import os
    srcfile = "D://test/foot.txt"
    fpath,fname = os.path.split(srcfile)#分离路径和文件名.
    if not os.path.exists(fpath):
      os.makedirs(fpath)
    f = open("fname","w")
    f.write("写入的内容")
    f.flush()
    f.close()



            

python文件的读写

标签:直接   删除文件   打开   删除   读取   not   append   flush   文件夹   

原文地址:https://www.cnblogs.com/lq2018/p/9690459.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!