python的文件操作
1,打开文件
编码方式要和文件的编码方式相同!
#open('路径','打开方式','指定编码方式') f = open(r'E:pycharm学习day8 est', mode='r', encoding='utf-8')
打开方式:
只读 r
with open('test', mode='r', encoding='utf-8') as f: print(f.read())
只写 w
with open('test', mode='w', encoding='utf-8') as f: f.write('举头望明月,低头思故乡。') # test文件不存在则新建 存在则删除原文件的内容后添加新的
追加 a
with open('test', mode='a', encoding='utf-8') as f: f.write('举头望明月,低头思故乡。') # test文件不存在则新建 存在则在原文件内容的后面添加
读写 r+
with open('test', mode='r+', encoding='utf-8') as f: print(f.read()) f.write('海上生明月,天涯共此时。') # 先读后写 写的添加到后面 with open('test', mode='r+', encoding='utf-8') as f: f.write('海上生明月,天涯共此时。') print(f.read()) # 先写后读 写的从头开始逐一覆盖添加
写读 w+
with open('test', mode='w+', encoding='utf-8') as f: f.write('举头望明月,低头思故乡。') print(f.read()) # 相当于先w清空写好内容后光标在最后索引r没有任何内容 with open('test', mode='w+', encoding='utf-8') as f: print(f.read()) f.write('举头望明月,低头思故乡。') # 相当于先w清空 所以读的内容为空 然后再写入新的内容
2,操作文件
读文件
with open('test', mode='r', encoding='utf-8') as f: print(f.read()) # 一次性读取全部内容 with open('test', mode='r', encoding='utf-8') as f: print(f.readline()) # 一行一行读取 with open('test', mode='r', encoding='utf-8') as f: print(f.readlines()) # 一次性读取全部,转换为列表,元素是每行的内容
写文件
with open('test', mode='w', encoding='utf-8') as f: f.write('举头望明月,低头思故乡。') # test文件不存在则新建 存在则删除原文件的内容后添加新的
其他的操作方式
# 定义读取的字符个数 with open('test', mode='r', encoding='utf-8') as f: print(f.read(2)) # 负数获取全部 0为空
# 移动指针位置 with open('test', mode='r', encoding='utf-8') as f: f.seek(3) # 移动是按字节数 # f.seek(2) # utf-8一个中文字符三个字节表示 所以2个字节找不到报错 print(f.read())
# 获取字符指针的位置 with open('test', mode='r', encoding='utf-8') as f: f.read() # 将文件读完 指针移动到结尾 print(f.tell()) # tell()返回指针位置
# 截取指定长度的字符 截取是按字节数 with open('test', mode='r+', encoding='utf-8') as f: f.truncate(9) # 截取前9个字节,英文就是前九个 ,中文是前三个
3,关闭文件
一般在操作完成后加close()来完成关闭文件。(容易忘记!)
f = open(r'E:pycharm学习day8 est', mode='r', encoding='utf-8') content = f.read() print(content) f.close() # 关闭
另外一种方式可以有效的避免忘记写close()。
# 通过with ... as来进行文件处理,最后会自动关闭文件 with open('test', mode='r', encoding='utf-8') as f: print(f.read())