使用内置函数 open 来操作文件有三步: 打开文件, 操作文件, 关闭文件.
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file 如果只写文件名, 比如'file1.txt', 则默认是当前路径, 如果当前路径没有这个名字的文件, 则报错, 如果是其他目录的文件, 则需要加上文件路径.
mode 有 4 种模式:'r'表示只读模式,'w'代表只写入模式(如果文件存在, 则覆盖掉, 不存在则创建),'x'表示新创建一个文件, 并进入写入模式(如果文件存在, 则报错),'a'表示追加写入模式, 所有写入内容都在文件末尾. 打开 file 有三种模式,'b'代表二进制模式,'t'代表文本模式,'+'表示读写模式. 默认文件打开是'rt'模式.
encoding 如果没传入, 则默认是平台当前的编码方式. 只在文本模式中需要编码. 二进制模式不需要 encoding.
buttering, 指缓冲, 默认是 - 1, 代表
读时是按照指针的顺序, 从前往后读, 写时, 都是写到最后, 指针也到了最后.
在学习过程中有什么不懂得可以加我的
python 学习交流扣扣 qun,***
群里有不错的学习视频教程, 开发工具与电子书籍.
与你分享 python 企业当下人才需求及怎么从零基础学习好 python, 和学习什么内容
- help(open)
- f1 = open('hello.txt', 'w', encoding='utf-8')
- f1.write('hello,lanxing') #将字符串写入文件.
- f1.close() #关闭文件
- f2 = open('hello.txt', 'rb')
- data = f2.read() #read 表示读取多少个字符, 如果不加参数, 则默认读取全部内容.
- print(data)
- data2 = str(data,encoding='utf-8')
- print(data2)
- f2.close()
- f3 = open('test1.txt', 'wb')
- # 以二进制模式进行写入操作, write 的参数必须是字节形式, 所以用 bytes 将字符串转换成字节.
- f3.write(bytes('中国人', encoding='utf-8'))
- f3.close()
- f4 = open('test1.txt', 'rb+')
- data4 = f4.read(3) #只读取 3 个字节
- print(data4)
- str_data4 = str(data4,encoding='utf-8')
- print(str_data4)
- f4.close()
- # 一, 以下是读写模式, 先读再写.
- f5 = open('test1.txt', 'r+', encoding='utf-8')
- # tell 告诉当前指针 (或叫光标) 在哪个位置, 一个字节就是一个指针位
- print(f5.tell()) # tell
- data5 = f5.read(1) # 读取 1 个字符, utf-8 编码中, 一个中文字符是 3 个字节.
- print(f5.tell()) # 所以现在是 3 个指针位
- print(data5)
- data6 = f5.read(1) # 再读 1 个字符位.
- print(data6)
- print(f5.tell()) # 现在指针在第 6 个字节位处了
- f5.seek(0) # 将指针重新调整到起始位置.
- f5.write('日本人') # 写入操作, 会在末尾追加, 指针调整到最后.
- f5.close()
- # 二, 以下是写读模式, 先写再读, 即先清空再读. 写入的同时, 指针就在最后了.
- f6 = open('test1.txt', 'w+', encoding='utf-8')
- data6 = f6.read()
- print(data6) #空值, 因为先写, 已经清空整个文件了.
- f6.write('中国人')
- print(f6.tell()) #是 9, 因为 3 个汉字是 9 个字节.
- data7 = f6.read() #还是空值, 因为现在指针在 9,9 后面没有数据了.
- f6.seek(0) #将指针调到到开始.
- data8 = f6.read()
- print(data8)
- f6.close()
- # 三, a + 模式, 打开时, 指针已经在最后了.
打开文件一定要记得关闭文件, 最好使用 with 来打开文件, with 打开文件会自动关闭文件.
- with open('test1.txt','w+',encoding='utf-8') as f:
- f.write('中国人')
- with open('test1.txt','r+',encoding='utf-8') as f1, open('test2.txt','w+',encoding='utf-8') as f2:
- #with 可以同时打开多个文件.
- for line in f1:
- #将 f1 的每一行都写入到 f2 文件中去.
- f2.write(line)
文件的基本操作还有:
flush(), 即时刷新, 可以在文件未关闭之前看到文件更新内容, 不接参数.
readline(), 读取当前指针处的一行内容.
readlines(n), 读取当前指针处的 n 个字符, 如果 n 不写, 则默认全读完, 如果 n 小于当前行的字符长度, 则读取当前行内容, 包括换行符 \ n, 如果 n 大于当前行的字符长度, 则一直到第从当前指针处的第 n 个字符所在的行, 每一行的内容包括换行符作为一个列表的元素, 最终返回该列表.
close(), 关闭文件
seek(n), 调整指针位置
tell(), 返回当前指针位置.
truncate(), 截取当前指针处之前的字节内容. 文件关闭时, 就只有截取的内容了.
read(n), 读取从当前指针处的多少个字符. 返回的是字符串.
write(), 写入字符串或字节.
来源: http://www.bubuko.com/infodetail-3251641.html