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

  1. 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
Logo

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

更多推荐