r | 以只读方式打开文件 | r+ | 先读,再写模式 |
rb | 以二进制格式只读打开,图片,视频等文件 | rb+ | 二进制格式,先读再写 |
a | 以追加格式打开f.write(),在最后一行追加,文件不存在,创建文件。 | a+ | 以读写格式打开f.write(),在最后一行追加,文件不存在,创建文件。 |
ab | 和a区别于,二进制 | ab+ | 和ab区别于,二进制 |
w | 写模式创建新文件,覆盖原文件,不可读 | w+ | 写读模式,先写再读,创建新文件,覆盖原文件 |
wb | 和w区别于,二进制 | wb+ | 和wb区别于,二进制 |
f.read(num) | 默认读取整个文件,num可以设置设取的数据的大小(英文字符个数) |
f.readlines(num) | 默认读取整个文件,并以行为分隔符,返回值是一个列表,每行为一个元素 |
f.readline(num) | 每次运行读取一行,最节省空间 |
f.write(str) | 向文件写入数据,str必须是字符串类型。 |
f.tell() | 显示当前指针位置,使用next()方法时不能使用tell() |
f.seek(num) | 设置指针位置,f.seek(0)文件开始, |
f.flush() | 强制把内存数据写入到文件。默认程序运行结束才写入 |
next(f) | 逐行读取文件,f是打开的文件对象,不能与tell()同时用,一般迭代器用 print(read_file.tell()) OSError: telling position disabled by next() call |
f.close() | 关闭打开的文件,清除内存 |
[size=1em]1 [size=1em]2 [size=1em]3 [size=1em]4 [size=1em]5 [size=1em]6 [size=1em]7 [size=1em]8 [size=1em]9 [size=1em]10 [size=1em]11 [size=1em]12 [size=1em]13 [size=1em]14 [size=1em]15 [size=1em]16 [size=1em]17 [size=1em]18 [size=1em]19 [size=1em]20 [size=1em]21 [size=1em]22 [size=1em]23 [size=1em]24 [size=1em]25 [size=1em]26 [size=1em]27 [size=1em]28 [size=1em]29 | [size=1em][size=1em]#假设文件test.txt内容如下 [size=1em]''' [size=1em]0=000 [size=1em]1=100 [size=1em]2=200 [size=1em]3=300 [size=1em]4=400 [size=1em]5=500 [size=1em]6=600 [size=1em]7=700 [size=1em]8=800 [size=1em]''' [size=1em]#1# 最省空间,最快的读取方式 [size=1em]# read_file.readline(),每运行一次,自动读取下一行 [size=1em]with open('file_text1.text', 'r') as read_file: [size=1em] f = read_file.readline() [size=1em] while f: # 在条件判断中,None和False都是False,其余为True,欢迎补充 [size=1em] print(f, end='') [size=1em] f = read_file.readline() [size=1em]# 注意end,因为readline()读取包含换行符,print默认也加空行符,所以会出现空一行 [size=1em]#2# 其它方法组合操作 [size=1em]with open('file_text1.text', 'r') as read_file: [size=1em] f = read_file.read(5) [size=1em] print(f) # 运行结果是0=000 [size=1em] print(read_file.tell()) # 当前位置是5 [size=1em] read_file.seek(22) # 将指针移动到22 [size=1em] print(read_file.readlines())# '=300\n' 从位置22开始以行为元素,组成一个列表 |
[size=1em]1 [size=1em]2 [size=1em]3 [size=1em]4 [size=1em]5 [size=1em]6 [size=1em]7 [size=1em]8 [size=1em]9 [size=1em]10 [size=1em]11 [size=1em]12 [size=1em]13 [size=1em]14 [size=1em]15 [size=1em]16 [size=1em]17 [size=1em]18 [size=1em]19 [size=1em]20 [size=1em]21 [size=1em]22 [size=1em]23 | [size=1em][size=1em]# input在with里面 [size=1em]d = {} [size=1em]with open('file_text1.txt', 'w') as file: [size=1em] for i in range(20): [size=1em] file.write(str(i) + '=' + str(i)+'00\n') [size=1em] s=input('-----停止!文件未关闭,找不到file_text1.txt-----:') [size=1em] [size=1em] [size=1em]# 把input移动到with外面 [size=1em]d = {} [size=1em]with open('file_text1.txt', 'w') as file: [size=1em] for i in range(20): [size=1em] file.write(str(i) + '=' + str(i)+'00\n') [size=1em]s=input('-----停止!文件正常关闭,可以找到file_text1.txt-----:') [size=1em]# 使用flush(),可以打开'file_text1.txt',每行都会立即写入 [size=1em]d = {} [size=1em]with open('file_text1.txt', 'w') as file: [size=1em] for i in range(20): [size=1em] file.write(str(i) + '=' + str(i)+'00\n') [size=1em] file.flush() [size=1em] s=input('-----停止!有文件,有内容-----:') |
[size=1em]1 [size=1em]2 [size=1em]3 [size=1em]4 [size=1em]5 [size=1em]6 [size=1em]7 [size=1em]8 [size=1em]9 [size=1em]10 [size=1em]11 | [size=1em][size=1em]temp_file, source_file = 'temp_info.txt', 'info.txt' [size=1em]# 同时打开两个文件 [size=1em]with open(temp_file, 'w', encoding='utf-8') as temp_file_write,\ [size=1em] open(source_file, 'r', encoding='utf-8') as file_read: [size=1em] file_read_line = file_read.readline() [size=1em] while file_read_line: [size=1em] temp_file_write.write(file_read_line) [size=1em] file_read_line = file_read.readline() [size=1em] [size=1em] [size=1em]# 然后再把上面的temp_file和suorce_file换个位置,写回去就好了,是不是发现点什么?仔细思考吧:) |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |