文件操作
文件操作三种方式
-
write) 模式 : write 覆盖写模式,如果你文件中有内容,直接覆盖掉写进去新的内容
-
a(append) 模式 : write 追加写模式,如果你文件中有内容,再原有内容的基础上追加内容
with open('01.txt','a',encording='utf8') as f: fp.write('my name is tony'+'\n') fp.close()
-
r(read) 模式 : read 读内容模式,可以将文件中的内容读出来
控制文本读写格式
-
t 模式 : 文本类型。读内容和写内容都是字符串格式
with open(r'01.txt','rt',encoding='utf8') as fp: data=fp.read() for line in data.split(':'): print(line,type(line))
-
b 模式 :二进制模式。读内容和写进去的内容必须都是二进制格式
文件拷贝
- 要求:
- 输入一个文件地址 --- 把文件内容读出来
- 输入一个文件地址 --- 把当前文件内容拷贝到新的地址和新的文件里面
path_start = input("原始地址:>>>>").strip()
path_end = input("目标地址:>>>>").strip()
modle = {1: 'wb', 2: 'rb'}
print(f"{path_start} to {path_end} :>>>> 已开始!")
with open(path_start, modle[2]) as read_f, open(path_end, modle[1]) as write_f:
write_f.write(read_f.read())
print(f"{path_start} to {path_end} :>>>> 已完成!")
读操作
-
readline :只读一行
with open('01.txt', 'r', encoding='utf-8') as fp: data = fp.readline() print(data) for line in data: print(line)
控制文件内光标移动
-
【1】控制读的字符个数
with open('01.txt', mode='rt', encoding='utf-8') as f: data = f.read(6) # 读取3个字符 print(data)
-
【2】seek方法
-
以文件开头作为参照
-
以当前我所在位置作为参照
-
以文件末尾的位置作为参照
with open('02.txt', 'rt', encoding='utf-8') as fp: # 英文占一个字节 (一个字符) # 中文占三个字节 (一个字符) fp.seek(6, 0) print(fp.tell()) # 6 print(fp.read()) # 从开头开始算,移动6个字节,再从6字节这个位置向后读数据
文件内容替换
# 原来的文本内容如下 # 张一蛋 山东 179 49 12344234523 # 李二蛋 河北 163 57 13913453521 # 王全蛋 山西 153 62 18651433422 # 修改后的内容如下 # 张一蛋(妇女主任) 山东 179 49 12344234523 # 李二蛋(村长) 河北 163 57 13913453521 # 王全蛋(书记) 山西 153 62 18651433422
with open('04.txt', 'r', encoding='utf-8') as file: #一行一行读取 data = file.readlines() line_list = [] for line in data: if '张一蛋' in line: line = line.replace(line.split()[0], f'{line.split()[0]}(妇女主任)') elif '李二蛋' in line: line = line.replace(line.split()[0], f'{line.split()[0]}(村长)') elif '王全蛋' in line: line = line.replace(line.split()[0], f'{line.split()[0]}(书记)') line_list.append(line) print(line_list) with open('04.txt', 'w', encoding='utf-8') as fp: fp.writelines(line_list)
-
列表生成式
-
列表生成式: 新的列表,每个元素都去除掉了空格
people=['张三 ',' 李四','王五'] list=[i.strip() for i in people] list=[] for i in people: list.append(i.strip()) print(list) #输出:['张三', '李四', '王五']
-
列表生成式 : 遍历两个列表并取出每一个列表的元素 做乘法运算
list_one = [x * y for x in test_1 for y in test_2] print(list_one)
-
列表生成式 : 遍历两个列表并取出每一个列表对应索引的元素 做乘法运算
list = [test_1[i] * test_2[i] for i in range(len(test_1))] print(list)
-
列表生成式 : 遍历两个列表并取出每一个列表对应索引的元素 做乘法运算
list = [x * y for x, y in zip(test_1, test_2)] print(list)
-
字典生成式
num_dict = {} for key in range(3): for value in range(2): num_dict[key] = value print(num_dict) my_dict = {key: value for key in range(3) for value in range(2)} print(my_dict) # {0: 1, 1: 1, 2: 1}
tuple_list = [('name', 'hope'), ('age', 18), ('hobby', 'piano')] dict = {key: value for key, value in tuple_list} print(dict)