Python档案袋(文件系列操作 )

文件读写基础

简单的读文件:

 1 # r 表示只能读
 2 #打开文件,得到文件光标对象,文件不存在则报错
 3 f=open("ww.txt","r",encoding="utf-8")
 4 
 5 #读取文件内容
 6 res=f.read()
 7 
 8 #关闭文件
 9 f.close()
10 
11 print(res)

读文件补充:

 1 # r 表示只能读
 2 #打开文件,得到文件光标对象,文件不存在则报错
 3 f=open("ww.txt","r",encoding="utf-8")
 4 
 5 #读取文件内容,一次性全部读取
 6 #rengs=f.read()
 7 
 8 #读一行
 9 #res=f.readline()
10 
11 #将文件内容变成一个数组,每行一个元素,一次性全部读取
12 #res=f.readlines()
13 
14 #print(res)
15 
16 #每行循环打印,一次性全部读取
17 #for linex in f.readlines():
18 #   print(linex)
19 
20 #每行循环打印,一次性读一行,效率高,推荐
21 for linex in f:
22     print(linex)
23 
24 #查看文件指针位置
25 #汉字长度为3,换行符长度为2,字母长度为1,与文件编码相关
26 print(f.tell())
27 #指针回退,0表示文件首部
28 f.seek(0)
29 
30 #打印文件编码
31 print(f.encoding)
32 
33 #打印文件名
34 print(f.name)
35 
36 #关闭文件
37 f.close()

简单的写文件:

 1 # w  表示只能写
 2 #打开文件,得到文件光标对象,如果文件不存在则新建,如果存在则覆盖
 3 f=open("ww.txt","w",encoding="utf-8")
 4 
 5 #写文件,返回写入的字数,中文也是1,输出结果为:24
 6 res=f.write("dongxiao\ndongdadong\n东小东东")
 7 
 8 #f.flush() #强制刷新,写文件时一般有缓冲区,缓冲区满才会写入
 9 #print(f.truncate(2)) #文件截取并更新原文件,从头开始截取,长度与文件编码相关
10 
11 #关闭文件
12 f.close()
13 print(res) #输出:24

简单的追加

在文件内容尾部添加数据

 1 # a  表示追加,只能写
 2 #打开文件,得到文件光标对象,如果文件不存在则新建
 3 f=open("ww2.txt","a",encoding="utf-8")
 4 
 5 #写文件,返回写入的字数,中文也是1,输出结果为:7
 6 res=f.write("\n追加的东小东")
 7 
 8 #关闭文件
 9 f.close()
10 
11 print(res) #输出:7

二进制数据

设计图片或者视频数据时可以使用

二进制文件读:

# rb  表示二进制只读

#打开文件,不存在时报错
f=open("ww.txt","rb")

res=f.read()
print(res)

#关闭文件
f.close()

二进制文件写:

# wb  表示二进制只写

#打开文件,不存在时创建
f=open("ww.txt","wb")

#必须经过编码成二进制才能进行写
res=f.write("东小东dong".encode("utf-8"))
print(res) #输出:13

#关闭文件
f.close()

文件内容更改:

实现一个文件的内容复制到另一个文件,并在文件复制的路上,对文件数据的部分修改

#打开两个文件,分别为写和读
fr=open("ww.txt","r",encoding="utf-8")
ft=open("ww1.txt","w",encoding="utf-8")

#逐行取内容
for lienx in fr:
    print(lienx)

    #寻找dong是否在字符串中
    if "dong" in lienx:
        #替换
        lienx=lienx.replace("dong","dongxiaodong")

    ft.write(lienx)

#关闭文件
fr.close()
ft.close()

 

其他方法补充

读写方式操作文件:

 1 # r+  表示读写
 2 
 3 #打开文件,不存在是报错
 4 f=open("ww.txt","r+",encoding="utf-8")
 5 
 6 print(f.tell())
 7 #
 8 res=f.write("dongxiao\ndongdadong\n东小东东")
 9 print(res)
10 
11 f.seek(0) #移动文件指针
12 
13 res=f.read()
14 print(res)
15 
16 
17 #关闭文件
18 f.close()

写读方式操作文件:

# w+  表示写读

#打开文件,不存在时创建
f=open("ww8.txt","w+",encoding="utf-8")

#以覆盖方式进行写文件
res=f.write("dongxiao\ndongdadong\n东小东东")
print(res)

#此时光标在结尾,必须移动光标
f.seek(0)

res=f.readline()
print(res)

#关闭文件
f.close()

追加写读方式操作文件:

 1 # a+  表示追加写读
 2 
 3 #打开文件,不存在时创建
 4 f=open("ww10.txt","a+",encoding="utf-8")
 5 
 6 #以追加方式进行写文件
 7 res=f.write("dongxiao\ndongdadong\n东小东东")
 8 print(res)
 9 
10 #此时光标在结尾,必须移动光标
11 f.seek(0)
12 
13 res=f.read()
14 print(res)
15 
16 
17 #关闭文件
18 f.close()

with open……as… 文件操作可以避免忘记手动关闭文件,利用缩进特性实现,下面是如上相同功能实现。

#打开两个文件,分别为写和读
with open("ww.txt","r",encoding="utf-8") as fr,open("ww1.txt","w",encoding="utf-8") as ft:
    # 逐行取内容
    for lienx in fr:
        print(lienx)

        # 寻找dong是否在字符串中
        if "dong" in lienx:
            # 替换
            lienx = lienx.replace("dong", "dongxiaodong11")

        ft.write(lienx)

获取文件目录:

import os

print(os.path.abspath(__file__))#得到程序的绝对路径
print(os.path.dirname(os.path.abspath(__file__)))#得到程序的绝对路径目录名

print(__file__) #返回程序的相对路径
posted @ 2019-03-19 20:55  东小东  阅读(353)  评论(0编辑  收藏  举报