标签:write strip() 日记 不能 参数 磁盘 位置 字节 转义
f = open("文件操作.txt", mode=‘r‘, encoding="utf-8")
f = open("送别.txt" mode="w", encoding="utf-8") f.write("下马饮君酒, 问君何所之?\n") f.write("君言不得意, 归卧南山陲。\n") f.write("但去莫复问, 白云无尽时。\n") f.close()
1.read():一次性全都读取出来。弊端:占内存。如果文件过大,容易导致内存崩溃。
f = open("送别.txt", mode="r", encoding="utf-8") content = f.read() print(content)
f.close() 结果: 下马饮君酒, 问君何所之? 君言不得意, 归卧南山陲。 但去莫复问, 白云无尽时。
2.read(n):读取n个字符。需要注意的是,如果再次读取,那么会在当前位置继续去读,而不是从头读。
f = open("送别.txt", mode="r", encoding="utf-8") content = f.read(5) print(content)
f.close() 结果: 下马饮君酒
f = open("送别.txt", mode="r", encoding="utf-8") content = f.readline() print(content)
f.close() 结果: 下马饮君酒, 问君何所之?
f = open("送别.txt", mode="r", encoding="utf-8") content = f.readlines() print(content)
f.close() 结果: [‘下马饮君酒, 问君何所之?\n‘, ‘君言不得意, 归卧南山陲。\n‘, ‘但去莫复问, 白云无尽时。‘]
循环读取
f = open("送别.txt", mode="r", encoding="utf-8") for line in f: print(line.strip()) f.close() 结果: 下马饮君酒, 问君何所之? 君言不得意, 归卧南山陲。 但去莫复问, 白云无尽时。
f = open("送别.txt", mode="a", encoding="utf-8") f.write("- 王维")
f.close() 结果: 下马饮君酒, 问君何所之? 君言不得意, 归卧南山陲。 但去莫复问, 白云无尽时。 - 王维
从磁盘根目录找文件
指相对于当前程序所在的文件夹
f = open("送别.txt", mode="rb") content = f.read() print(content)
f.close() 结果: b‘\xe4\xb8\x8b\xe9\xa9\xac\xe9\xa5\xae\xe5\x90\x9b\xe9\x85\x92\xef\xbc\x8c \xe9\x97\xae\xe5\x90\x9b\xe4\xbd\x95\xe6\x89\x80\xe4\xb9\x8b\xef\xbc\x9f\r\n\xe5\x90\x9b\xe8\xa8\x80\xe4\xb8\x8d\xe5\xbe\x97\xe6\x84\x8f\xef\xbc\x8c \xe5\xbd\x92\xe5\x8d\xa7\xe5\x8d\x97\xe5\xb1\xb1\xe9\x99\xb2\xe3\x80\x82\r\n\xe4\xbd\x86\xe5\x8e\xbb\xe8\x8e\xab\xe5\xa4\x8d\xe9\x97\xae\xef\xbc\x8c \xe7\x99\xbd\xe4\xba\x91\xe6\x97\xa0\xe5\xb0\xbd\xe6\x97\xb6\xe3\x80\x82‘
wb模式下,可以不指定打开文件的编码。但是在写文件的时候必须将字符串转化成utf-8的bytes数据,否则报错:TypeError: a bytes-like object is required, not ‘str‘
f = open("送别.txt", mode="wb") f.write(" 五言古诗".encode("utf-8"))
f.close() 结果: 五言古诗
3)应用
将图片(长城.jpg)从C盘复制到D盘:
f1 = open(r"c:\长城.jpg", mode="rb") f2 = open(r"d:\长城.jpg", mode="wb") for line in f1: f2.read(line) f1.close() f2.close()
# place.txt: # 北京 # 上海 # 深圳 f = open("place.txt", mode="r+", encoding="utf-8") content = f.read() f.write("广州") print(content)
f.close() 结果: 北京 上海 深圳 # place.txt: # 北京 # 上海 # 深圳 # 广州
注意:在r+模式下,不论读取多少内容,再次写入时,都是在末尾写入
送别.txt: 下马饮 君酒,问君何所之? f = open("送别.txt", mode="r+", encoding="utf-8") content = f.read(3) f.write("\n君言不得意,归卧南山陲。") print(content) f.close() 结果: 下马饮 送别.txt: 下马饮君酒,问君何所之? 君言不得意,归卧南山陲。
先写后读(错误示范)
如果直接写入的话,则在开头写入,覆盖开头的内容
place.txt: 北京 上海 深圳 f = open("place.txt", mode="r+", encoding="utf-8") f.write("广州") content = f.read() print(content) f.close() 结果: 上海 深圳 place.txt: 广州 上海 深圳
f = open("introduction.txt", mode="w+", encoding="utf-8") f.write("你好,我叫赛利亚") content = f.read() print(content) f.close() 结果:
f = open("introduction.txt", mode="a+", encoding="utf-8") f.write("祝你玩的愉快!") content = f.read() print(content) f.close() 结果: introduction.txt: 你好,我叫赛利亚祝你玩的愉快!
introduction.txt: 你好,我叫赛利亚 f = open("introduction.txt", mode="r", encoding="utf-8") f.seek(3) content = f.read(3) print(content)
f.close() 结果: 好,我
程序返回当前光标的位置
introduction.txt: 你好,我叫赛利亚 f = open("introduction.txt", mode="r", encoding="utf-8") content = f.read(3) print(f.tell()) # 9
f.close()
默认从开头截取到光标位置,后面的内容将会被删除。
introduction.txt: 你好,我叫赛利亚 f = open("introduction.txt", mode="r+", encoding="utf-8") f.seek(3) f.truncate() f.close() introduction.txt: 你
truncate(n):从开头载取到n位置,后面的内容将会被删除。
introduction.txt: 你好,我叫赛利亚 f = open("introduction.txt", mode="r+", encoding="utf-8") f.truncate(3) f.close() introduction.txt: 你
文件操作并有直接修改文件功能,只能将文件中的内容读取到内存中,将信息修改完毕,然后将源文件删除,将新的文件的名字改成老文件的名字。
import os with open("唐诗", mode="r", encoding="utf-8") as f1, open("唐诗_副本", mode="w", encoding="utf-8") as f2: for line in f1: line = line.replace("?", "。") f2.write(line) os.remove("唐诗") # 删除源文件 os.rename("唐诗_副本", "唐诗") # 把副本改名为源文件
f1 = open(r"C:\日记本.txt", mode="r", encoding="utf-8") f2 = open(r"D:\日记本.txt", mode="w", encoding="utf-8") for line in f1: f2.write(line) f1.close() f2.close()
data.txt: 序号,名称,价格,库存 1,苹果,5,6000 2,榴莲,20,5000 3,香蕉,3,2000 with open("data.txt", mode="r", encoding="utf-8") as f: titles = f.readline().strip() t_list = titles.split(",") lst = [] for line in f: dic = {} line = line.strip().split(",") for i in range(len(line)): dic[t_list[i]] = line[i] lst.append(dic) print(lst) 结果: [{‘序号‘: ‘1‘, ‘名称‘: ‘苹果‘, ‘价格‘: ‘5‘, ‘库存‘: ‘6000‘}, {‘序号‘: ‘2‘, ‘名称‘: ‘榴莲‘, ‘价格‘: ‘20‘, ‘库存‘: ‘5000‘}, {‘序号‘: ‘3‘, ‘名称‘: ‘香蕉‘, ‘价格‘: ‘3‘, ‘库存‘: ‘2000‘}]
标签:write strip() 日记 不能 参数 磁盘 位置 字节 转义
原文地址:https://www.cnblogs.com/ipython-201806/p/9857935.html