python文件的读写
2021-06-19 14:04
标签:直接 删除文件 打开 删除 读取 not append flush 文件夹 打开非文本的东西有带"b"的模式,如图片,视频之类的. python文件的读写 标签:直接 删除文件 打开 删除 读取 not append flush 文件夹 原文地址:https://www.cnblogs.com/lq2018/p/9690459.html
f 可以看成一个可以操作文件的句柄.
文件路径分: 相对路径,绝对路径.
相对路径: 相对的是你当前程序所在的文件夹.(如果要从当前文件夹出来用../命令, ../返回上一级目录.)
绝对路径: 1.从磁盘根睡目录找 2.互联网上的绝对路径.
还可以用 with open("文件路径",mode="") as f:#此处以,结尾.这个命令可以接多个文件.
这样打开文件可以不用f.close()关文件.
f = open("文件名","r")
ret = f.read()
f.close()#打开文件进行操作后都要记得关闭.
在读的模式下没有这个文件会报错.
f.readline()#读一行,会读取换行,行间有空行是正常的.
f.readlines()#读取多行,相当于一次全部读出来.
因为文件句柄本来就是可以迭代器
所以可以用for循环
for line in f:
可以计数来读取想要的行
f = open("文件名","w",encoding="utf-8")
f.write("要写入的内容")
f.flush()#刷新的意思(一种好的习惯而已)
f.close()
在写模式下如果当前目录文件不存在会自动创建文件夹并写入内容.(但如果文件名前加了没有存在的路径就不可以,会报错)
w模式在写入之前会清掉之前的内容.(文件操作只要见到"w"都会这样.)
f = open("文件名","a",encoding="utf-8")
f.write("要写入的内容")#"a"就是append的意思,就是有写文件的时候不会覆盖前面的内容后追加到后面.
f.flush()
f.close()
追加是一种写模式.
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)
f = open("文件名","wb")
f.write("你好")#这样是写不进的,会报错,必须先编码,因为是对字节进行操作.
f.write("你好".encode="utf-8")#这样先编码才行.
f.flush()
f.close()
因为写进去是字节,在pycharm里用utf-8打开就会还原成原的写了字符.
见w写入都会被覆盖.
"r" "w" "a"
"rb" "wb" "ab"
f = open("文件名",mode="r+")#先读后写是对读模式的扩展.
f.read(3)#如果先写后读,写入的会覆盖之前的(因这光标开始默认在顶格.会从光标所在位置往后写)
f.write()#此处传参数表示读几个字符(注意:不是字节).#继续读的话光标会接着往后读.
f.flush()#但是你要写,"r+"模式只要你读一次,不管读几个字节,都会默认光标到末尾.
f.close()
这种模式先读后写才是安全的.
f = open("文件名",mode="w+")#先写后读是对写模式的扩展.
f.write()#只要有w就会先清空原来的内容
f.read()#此处读的话会读不到内容,因为光标在末尾.要想读到内容要用f.seek()移动光标再读.
f.flush()
f.close()
这种模式一般不用.
seek(0)就是移动到开头.
f.seek(0,2)移动到末尾.#第一个参数表示移动多少字节,第二个参数表示从哪个位置开始偏移0表示的开头,1表示的是当前位置,2表示的是末尾.
如果你要反复的读就可以用在read()全部读完后,将光标移到开头f.seek(0)重新再读一遍.
f.tell()#可以获得当前光标所在的位置.
truncate()截断文件一般用不到.
把新文件名改成老文件,再把老文件删除来完成文件的修改.
os.remove("是删除的文件名")#删除文件
os.rename("是修改的文件名","文件名")#重命名文件
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()