python文件读写
1.文件1.python2File—python3TextOWrapper2.文件的打开1.open (file,mode=”r”)2.一定要有file文件路径(路径,文件名,文件格式),否则报错3.fo = open (fileDir)—-没有传mode,默认只读模式4.路径的写法:1.fi...
1.文件
1.python2 File —python3 TextOWrapper
2.文件的打开
1.open (file,mode=“r”)
2.一定要有file文件路径(路径,文件名,文件格式),否则报错
3.fo = open (fileDir)----没有传mode,默认只读模式
4.路径的写法:
1.fileDir = "E:/pytest.txt"
2.fileDir = "E:\\pytest.txt" ---避免\n的转意
3.fileDir = r"E:\pytest.txt" ---取消转意
5.路径
1.绝对路径
2.相对路径 ./ 当前路径 cd …/ 返回上级
6.读
0.如果该文件不存在,读的时候回报错
1.fo = open (fileDir,“r”) 等价于 fo = open (fileDir) 不写的话,默认只读
2.fo.tell() ------从0开始
3.fo.read(2) ------读两个字符
4.fo.read() ------读全部内容
5.文件中的换行是2个长度的 \r\n
6.fo.close() -----关闭文件
7.移动文件指针的位置: seek()
1. 0模式—绝对位置模式 fo.seek(移动的位数,0) 0可省略
fileDir = "E:/pytest.txt" #文件内容为:12345 换行abcde
fo = open (fileDir) #打开文件,如果没有这个文件会报错
print("读前",fo.tell())
print(fo.read(2))
print("读后",fo.tell())
fo .seek(1)
print("移动后",fo.tell())
结果:
读前 0
12
读后 2
移动后 1
1模式—当前位置开始移动 fo.seek(移动的位数,1) #前提是"rb"模式下(二进制模式)—非文本文件或者图片格式
fileDir = "E:/pytest.txt" #文件内容为:12345 换行abcde
fo = open (fileDir,"rb") #打开文件,如果没有这个文件会报错
print("读前",fo.tell())
print(fo.read(2))
print("读后",fo.tell())
fo .seek(2,1) #正数向后移,负数向前移
print("移动后",fo.tell())
结果:
读前 0
b’12’
读后 2
移动后 4
2模式----从尾部开始
1.seek(-1,2)
2.移动的位数 正数:向后移 负数:向前移
fileDir = "E:/pytest.txt" #文件内容为:12345 换行abcde
fo = open (fileDir,"rb") #打开文件,二进制的格式打开
print("读前",fo.tell()) #查看文件指针
print(fo.read(2)) #读两个
print("读后",fo.tell()) #查看文件指针
fo .seek(-1,2) #在当前位置再读两个位置
print("移动后",fo.tell()) #查看文件指针
结果:
读前 0
b’12’
读后 2
移动后 11
- readline 读取一行
1.该方法返回是: print(type(fo.readline())) ----<class ‘str’>
2.读完一行,指针会做相应的偏移
fileDir = "E:/pytest.txt" #文件内容为:12345 换行abcde
fo = open (fileDir) #打开文件,已二进制的格式打开
print(fo.readline())
print(fo.readline())
结果:
12345
#是因为有换行符 (文件内容为12345换行abcde)
abcde
9.readlines 读取所有行
fileDir = "E:/pytest.txt" # 文件内容为:12345 换行abcde
fo = open(fileDir) # 打开文件,已二进制的格式打开
print(fo.readlines())
结果:
['12345\n', 'abcde']
1.该方法返回是: print(type(fo.readlines())) ----<class 'list'>
区别:readline和readlines
1.fo.readline()------返回str
2.fo.readlines() --------返回是list-----每一行是里面的一个元素!
2.fo.read().splitlines()-----返回list 而且去掉了换行符
fileDir = "E:/pytest.txt" # 文件内容为:12345 换行abcde
fo = open(fileDir) # 打开文件,已二进制的格式打开
print(fo.read().splitlines())
结果:
[‘12345’, ‘abcde’]
7.文件写模式:
1.fo = open(fileDir,“w”) #不加W,默认是读模式
2.如果该路径下的文件存在----会清空!!!
3.如果该路径下的文件不存在----会新建!!!
4.在pytharm里面,你执行了fo.write(“123”)----可以直接写进去。原理上不是这样的,会对磁盘伤害严重。实际上是点保存的时候才能写进去。
5.fo.write(“123”)—返回值 写的字符串长度 print(type(fo.write(“你现在在哪?\n我在家”)))-----<class ‘int’>
6.fo.flush() 强行写入文件,相当于在Word里面写完了,点击保存下
7.fo.close() 关闭文件会强行写文件
fileDir = "E:/pytest3.txt" # 文件内容为:12345 换行abcde
fo = open(fileDir,"w") # 打开文件,已二进制的格式打开
print(fo.write("你现在在呀\n我在家"))
结果:
9
(文件里面内容是:你现在在呀
我在家)
8.追加模式 a 模式
fileDir = "E:/pytest3.txt" # 文件内容为:12345 换行abcde
fo = open(fileDir,"a") # 打开文件,已二进制的格式打开
fo.write("abc")
(文件里面内容是:你现在在呀
我在家abc)
fileDir = "E:/pytest3.txt" # 文件内容为:12345 换行abcde
fo = open(fileDir,"a") # 打开文件,已二进制的格式打开
print(fo.write("\n"+"abc"))
(文件里面内容是:你现在在呀
我在家
abc)
9.with open 方式
1.with open(filedir文件路径)as 路径的变量名
with open(filedir)as rf: =====等价于 rf = open(filedir)
2.可以省略fo.close()
3.可以操作多个文件(,隔开)
l例子:
# 常用的读文件
fileDir = "E:/test/QvSFz2.txt" # 文件内容为:12345 换行abcde
fo = open(fileDir) # 打开文件,已二进制的格式打开
fo = fo.read().splitlines()
print(fo)
# 常用的写文件
import string,random
for i in range(1,100):
a = ''.join(random.choices(string.ascii_uppercase + string.digits + string.ascii_lowercase, k=6))
fileDir = "E:/test/%s.txt"%a # 文件内容为:12345 换行abcde
fo = open(fileDir,"w") # 打开文件,已二进制的格式打开
fo.write(a)
练习
# 将文件全部读出来
f = open("a1.txt", mode="r", encoding="utf8")
s = f.read()
print(s)
f.close()
# 再原文件后面追加一行,信不信由你,反正我信了
f = open("a1.txt", mode="a", encoding="utf8")
f.write("\n信不信由你,反正我信了")
f.flush()
f.close()
# 将原文件全部清空,换成其他的内容
f = open("a1.txt", mode="w", encoding="utf8")
f.write("""每天坚持一点,
每天努力一点,
慢慢你会发现,
你的进步越来越大""")
f.flush()
f.close()
# 将原文件内容全部读取出来,并在“我说的都是真的。哈哈”这一行的前面加上一行,“你们就信把”,然后将更改之后的新内容。写到一个新的文件:a1.txt
import os
with open("a1.txt", mode="r", encoding="utf-8") as f1 \
, open("a1_new.txt", mode="w", encoding="utf-8") as f2:
s = f1.read()
ss = s.replace("我说的都是真的。哈哈", "你们就信吧\n我说的都是真的") # 将其中一行换掉
f2.write(ss)
os.remove("a1.txt") # 删掉a1.txt
os.rename("a1_new.txt", "a1.txt") # 将a1_new.txt改名为a1.txt

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)