open函数
1、打开文件的方式
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
r , 只读模式【默认】
w, 只写模式【不可读;不存在则创建;存在则清空内容;】
x, 只写模式【不可读;不存在则创建,存在则报错】
a, 追加模式【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
r+, 读写【可读,可写】
w+,写读【可读,可写】
x+ ,写读【可读,可写】
a+, 写读【可读,可写】
"b"表示以字节的方式操作
rb 或 r+b
wb 或 w+b
xb 或 w+b
ab 或 a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型
2.操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 5 # 1. r读模式 默认 6 # open是去找当前操作系统的编码 f句柄 7 f = open('xxx', 'r', encoding='utf8') 8 # data = f.read() 9 # data = f.readable() # 可读 10 # print('第一行', f.readline(), end='') 11 # print('第二行', f.readline()) 12 # print('第三行', f.readline()) # 如果超过读出文件行数也不会报错,游标也跟着行数走,文件最后有回车换行 13 data = f.readlines() 14 print(data) 15 # 一定要关闭,不然一直占用操作系统的资源 16 f.close() 17 18 # 2. w写模式 19 f = open('xxx1', 'w', encoding='utf8') 20 f.writable() 21 f.write('111 ') 22 f.write('222 333 444 ') 23 f.writelines(['555 ', '666 ']) # 文件操作只能读字符串 也只能写字符串 24 f.close() 25 26 # 3. a追加模式 27 f = open('xxx', 'a', encoding='utf8') 28 f.write(' 写到文件最后') 29 30 # 4. x只写模式 存在会报错 31 32 # 5. 模拟文件修改 33 f = open('xxx', 'r', encoding='utf8') 34 data = f.readlines() 35 print(data) 36 f.close() 37 38 dist_f = open('xxx', 'w', encoding='utf8') 39 dist_f.write(data[0]) # 这是删除,修改的话可以匹配字符串然后str里边的替代方式就可以修改了 40 dist_f.close() 41 42 # 6.with操作 43 # with open('a.txt', 'w') as f: 44 # f.write('1111 2222 ') 45 # 从一个文件读出数据再写到另外一个文件中 46 with open('a.txt', 'r', encoding='utf8') as src_f, 47 open('xxx', 'w', encoding='utf8') as dist_f: 48 data = src_f.read() 49 dist_f.write(data) 50 51 52 # 7.b字节模式 53 # f = open('xxx', 'rb') # 这里不能指定编码的格式 因为已经定了字节的模式了 54 # data = f.read() 55 # print(data.decode('utf8')) 56 # print(bytes('你好', encoding='utf8')) 57 # print(bytes(b'hello')) 如果是英文直接可以用b 如果中文就必须编码 这是在写以二进制的时候 58 # 磁盘存储的字节二进制的形式 字符串---encoding--->bytes类型 59 # bytes---decode--->字符串 60 # f = open('xxx', 'wb') 61 # f.write('中国'.encode('utf8')) 62 63 # f = open('xxx', 'ab') 64 # f.write('中国 '.encode('utf8')) 65 66 # f = open('xxx', 'ab') 67 # f.write('中国 '.encode('utf8')) 68 69 f = open('xxx', 'r', encoding='utf8', newline='') 70 data = f.read() 71 print(data.encode('utf8')) 72 # b'xe4xb8xadxe5x9bxbd xe4xb8xadxe5x9bxbd ' python默认windows 换行newline 换行 73 # f.tell() # 当前光标位置 74 # f.seek() # 光标位置方式 0 1 2三种方式 0代表从文件第一个字节 (1,2必须是b模式下)1代表正向 2代表倒序 75 # f.flush() # 刷新 这样就可以从内存的字节 保存到磁盘中 76 # f.truncate() # 截断 这是写的模式 77 # f.isatty() # 判断文件是否是同意tty设备 78 # f.next() # 获取下一行数据,不存在,则报错 79 # 文件内光标移动:文件打开方式b模式代表读取3个字节 其余文件内光标移动都是以字节为单位如seek tell truncate