2022年 11月 6日

通过Python对文件进行读取或写入

读取文件的三个步骤:
1.建立文件对象
2.读取文件
3.关闭文件
案例1:读取文件

1.打开冰箱门(建立文件对象)
    f =open("c:\\users\\xxl\\test.txt","rb")
    # read   binary 以二进制的格式读取文件,路径中的\需要用\转义,所以路径中的单斜杠变成了双斜杠
2.把大象拿出来(读取文件)
    f.read()
    b'This is a test txt\r\nAnd this is the second line'
        #这里的b是上面用二进制的格式打开文件,\r是回车,\n是换行
        # 这时候,如果再次使用f.read()读取文件,文件将没有内容,这是因为在第一次读取文件的时候,文件已经读取到底了,后面没有内容可以再读取了
    f.seek(0,0)#让读取的标志位回到最开始位置,第一个0是偏移量,第二个0是最起始的位置
        # 这时候如果再次使用f.read()即可以再次读取到文件内容
        # 偏移量,可以理解为读取文件的时候光标的位置距离最起始位置的距离
    f.read(5)#从偏移量开始读取5个字节
    f.readline()#敲一次读一行
    f.readlines()
    # 读取多行,并且把内容写入到以列表中。即通过列表显示多行信息
3.关上冰箱门
    # f.close()
    # 为什么需要关闭文件,open在打开文件的时候,把文件的数据存储到了内存空间中,如果不关闭,那内存将一直被占用,消耗系统资源

写入文件的三个步骤和读取文件有点类似:
1.打开文件
2.写入文件内容
3.保存文件
案例2写入文件:
    在用户家目录中建立一个名为testone.txt的文件,写入3行内容
        one
        two
        three
1.打开文件
    f =open("c:\\users\\xxl\\testone.txt","wb")#write
    #此时如果源文件不在则新建文件,源文件在则清空原文件内容
2.写入文件内容
    # f.write("")写入文件
    # f.writeline("")以行为单位写入
    f.writelines([b"one\r\n",b"two\r\n",b"three"])以列表的形式写入多行,前面的b是因为我们需要以二进制的格式写入进去

3.保存文件
    f.close()

案例3:拷贝文件
1.以读的形式打开源文件,以写的形式打开目的文件
    f = open("c:\\users\\xxl\\test.txt","rb")
    g = open("c:\\users\\xxl\\testone.txt","wb")
2.把源文件内容读取出来,写入到目的文件
    write = f.readlines()
    g.writelines(write)
3.关闭
    f.close()
    g.close()

案例4:通过文件对象对cmd.exe对命令行工具做复制
1.以读的形式打开源文件,以写的形式打开目的文件
    f = open("c:\\windows\\system32\\cmd.exe","rb")
    g = open("c:\\users\\xxl\\dmc.exe","wb")
2.把源文件内容读取出来,写入到目的文件
#这里由于cmd文件较大,担心跑死设备,每次仅读取4096字节,使用while循环读取和写入
while True:
    write = f.read(4096)
    if write == b"":
        break#文件读取结束后,自然就是读取到空值,所以这里做判断,如果读取到空值,则break
    g.write(write)
3.关闭
    f.close()
    g.close()