python之文件操作
# f = open('a.txt', encoding='utf-8',mode='r') # content = f.read() # print(content) # f.close()
'''f 变量 f_obj, f_handler, f_h, fh ,文件句柄。open() python的内置函数(内部调用的是windows的系统命令)。
1,打开文件,产生文件句柄。
2,对文件句柄进行操作。
3,关闭文件句柄。
读
- r *****
- rb ***
- r+ ***** r+b
- read()
- read(n)
- readline()
- readlines()
- for 循环
写
- w ***
- wb **
- w+
- w+b
追加
- a ***
- ab
- a+
- a+b
文件其他操作方法
- read()
- close()
- seek() *****
- tell() *****
- readab() ****
- writable() ****
- truncate
文件的改 *****
'''
# 读 r 对于r模式,mode可以默认不写。 #1,全部读取 # f = open('a.txt',encoding='utf-8',mode='r') # print(f.read()) #全部读取 # f.close() #2,read(n) # f = open('a.txt',encoding='utf-8',mode='r') # conten = f.read(10) #r模式,按字符读取 # print(conten) # f.close() #3,按行读取 # f = open('a.txt',encoding='utf-8',mode='r') # # print(f.readline()) # # print(f.readline()) # # print(f.readline()) # # print(f.readline()) # # f.close() #4,按行读取,返回一个列表 # f = open('a.txt',encoding='utf-8',mode='r') # conten = f.readlines() # print(conten) # f.close() #5,for循环 # f = open('a.txt',encoding='utf-8',mode='r') # for line in f: # print(line.strip()) # f.close() # ''' #报错原因 #1, 编码不一致,存储文件时编码与打开文件时编码不一致。 #2,路径问题 在路径的最前面, +r 每个\ 变成 \\ 绝对路径:d:\a.txt 从根目录开始找 相对路径:当前目录:当前文件夹。 ''' # rb # 文件操作中凡是带b字母,都是与非文字类文件相关的。 # f = open('a.jpg',mode='rb') # content = f.read(9) #rb模式, n按照字节读取 # r+ 读写:先读后追加。 # f = open('文件操作2',encoding='utf-8', mode='r+') # content = f.read() # print(content) # f.write('66666') # f.close() # 不读直接写,直接从开始覆盖。 # f = open('文件操作2',encoding='utf-8', mode='r+') # # f.write('深圳你好') # f.close() # 写 # w # 没有文件,创建文件也要写。 # 有文件 先清空,后写入。 # f = open('文件操作2',encoding='utf-8',mode='w') # f.write('深圳市南山区') # f.close() # wb 省略编码模式 # f = open('a.jpg',mode='rb') # content = f.read() # f1 = open('a2.jpg',mode='wb') # f1.write(content) # f.close() # f1.close() # 追加 # a # 没有文件,创建文件也要写。 # 有文件 直接在文件的最后面追加 # f = open('文件操作2',encoding='utf-8',mode='a') # f.write('广州天河区') # f.close() # w+ :写读 # f = open('文件操作2',encoding='utf-8',mode='w+') # f.write('深圳市南山区') # f.seek(0,2) #seek 按照字节调整光标 # content = f.read() # print(content) # f.close() # seek ***** # 将光标调整到开始:seek(0)。 # 光标从当前位置开始调整:seek(0,1) # 将光标调整到结尾,seek(0,2) # f = open('文件操作2',encoding='utf-8',mode='r') # f.seek(0,2) # print(f.read()) # f.close() # tell 告知光标的位置 ***** f = open('文件的改',encoding='utf-8') f.seek(0,2) # 0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。 print(f.tell()) f.close() # truncate 在writeable模式下进行截取。 在r+模式 # r+ a+ 不能在w模式下使用。对原文件进行截取。 # 在一定时间内关闭文件。 # 1,主动关闭文件句柄 # 2,开启多个文件句柄。 # with open('文件操作2',encoding='utf-8') as f,\ # open('wenjian',encoding='utf-8',mode='w') as f2: # print(f.read()) # f2.write('6666') # print(f2) ''' # 文件的改的操作 1, 以读的模式打开原文件,产生一个文件句柄f1 2,以写的模式创建一个新文件,产生一个文件句柄f2 3,读取原文件内容,进行修改,并将修改后的文件写入新文件。 4,将原文件删除。 5,将新文件重命名成原文件。 ''' import os with open('文件的改', encoding='utf-8') as f1,\ open('改', encoding='utf-8', mode='w') as f2: old_content = f1.read() new_content = old_content.replace('alex', 'SB') f2.write(new_content) os.remove('文件的改') os.rename('改', '文件的改') # import os # with open('文件的改', encoding='utf-8') as f1,\ # open('改', encoding='utf-8', mode='w') as f2: # for line in f1: # new_line = line.replace('SB', 'alex') # f2.write(new_line) # os.remove('文件的改') # os.rename('改', '文件的改') # # import os # with open('alex的深度剖析', encoding='utf-8') as f1,\ # open('alex的深度解析.bak',encoding='utf-8',mode='w') as f2: # old_content = f1.read() # new_content = old_content.replace('alex','SB') # f2.write(new_content) # os.remove('alex的深度剖析') # os.rename('alex的深度解析.bak', 'alex的深度剖析') # import os # with open('alex.txt', encoding='utf-8') as f1,\ # open('alex2.txt',encoding='utf-8',mode='w') as f2: # for line in f1: # new_line = line.replace('SB','alex') # f2.write(new_line) # os.remove('alex.txt') # os.rename('alex2.txt', 'alex.txt')