学习python的文件处理

 使用Python处理文件
(相关模块:os、os.path、shutil)
#读取文件hello.txt的另一种方式:
            print(open("hello1.txt").read())
 查看
1文件的创建
>f=open(‘hello.txt’,’w’) #若文件不存在则创建新文件;open()返回一个file对象,可以对file对象进行相关操作;模式“w”将会删除文件原有内容,重新写入新的内容
        >f.write(“whatever”) 
>f.close #记得关闭文件,否则可能会丢失f.write的数据
注意:
a.写入文件,一定要先f.close(),然后重新读取
b.图片、视频类二进制编码文件的读写要用“b”或者”rb“模式,b:以二进制模式打开文件,可与r、w、a(以写入方式打开文件,在文件末尾追加新内容,如果文件不存在,则创建新文件)
c.读取非ASCII编码文件要先以二进制打开,再解码,例如GBK格式:
  >f=open(‘hello.txt’,’rb’)
>u=f.read().decode(‘gbk’)
>print(u)
此外python提供codecs模块,在读取文件时自动转换编码,直接读出unicode:
>import codecs 
>with codecs.open(“hello.txt”,’r’,’gbk’) as f:
f.read()
d:模式”rb”’wb’中的b表示二进制编码文件
2 文件的读取
     read()和deadline()返回字符串,readlines()返回列表,
*eg:读取文件hello.txt:
                        hello world
hello china
       >f=open(“hello.txt”,”r”) >f.read() #’hello world\nhello china # f.read()返回字符串
>print(f.read()) #hello world
      hello china
若>print(f.readlines()),则返回列表#[‘hello world\n’,’hello china\n’],每一行为列表的一个元素
函数f.tell()
    返回当前函数指针位置
eg:>f.read(5)>f.tell()#5
*按行读取:f.readline() #文件指针到达文件末尾会报错,可以设置判断语句
eg:>f=open(“hello.txt”,”r")  #默认文件在工作目录中,查看python工作目录 os.getcwd()
                #”r"表示只读模式,若文件不存在则会抛出IOerror
      >while true ???
*多行读取:reaadlines()
一次性读取:f.read() #f.read()会一次性读取所有的文件,若文件过大,内存会爆满,建议使用f.read(size)来读取,或者f.readline(),f.readlines();其中f.readline(n)表示每行每次读取n个字节,(一个英文字母或者一个空格是一个字节),若当前行不足n个字节,读取到行的末尾。
3.文件的写入
将字符串写入:write()
将列表中存储的内容写入:writelines()
eg:>f=open(“hello.txt”,”a”)#模式”a”表示在原有文件末尾追加内容
   >f.writelines([“hello world\n”,”hello china”])
4 文件的删除
需要使用os和os.path模块,查看当前工作目录文件用>os.listdir(“.”)#返回列表形式;文件的删除需要先判断文件是否存在,存在则remove(),否则不进行任何操作。
    eg:删除hello.txt
>import os
>import os.path
>if os.path.exists(“hello.txt”):
           os.remove(“hello.txt")

5.文件的复制
eg:将a.txt 复制给b.txt
>a=open(“a.txt”,”r”)
>b=open(“b.txt”,”w”)
>b.write(a.read())
>a.close()
>b.close()
文件的复制还可以使用shutil模块,shutil模块提供了用于复制文件、目录的函数,函数copyfile()可以实现文件复制,copyfile(a,b)中a、b表示文件路径,把a复制给b:
>shutil.copyfile(“hello.txt”,”hello1.txt”)#新建hello1.txt,并把hello.txt内容复制到hello1.txt;
文件的剪切:
shutil模块下的move函数,move(a,b)将a移动到b路径,并且删除a路径。
eg:将hello1.txt移动到同目录下,改名为hello2.txt,并删除hello1.txt。
>shutil.move(“hello1.txt”,”hello2.txt”)
6.文件的重命名
os.rename(“hello.txt”,”hi.txt”)将hello.txt命名为hi.txt
   eg:将当前目录下.txt后缀改为.csv
>l=os.dir(“.")
for i in l:
pos=i.find(".")
if i[pos+1:]=="txt":
newname=i[:pos+1]+"csv"
os.rename(i,newname)
提示:a.还可以借助os.path模块下的splitext函数,os.path.splitext(”hello.txt")#返回列表[“hello",”.txt"]
eg:将当前工作目录下的csv文件改为txt文件
l=os.listdir(“.")
                        for i in l:
  i0=os.path.splitext(i)[0]
  i1=os.path.splitext(i)[1]
  if i1==".csv":
newname=i0+".txt"
os.rename(i,newname)
b.glob模块下的glob()函数可以匹配文件,glob模块下的主要函数就是glob(),glob()函数参数满足正则语法。eg:查找当前工作目录下.txt文件
>import glob>glob.glob(“*.txt”) #返回列表[“hello.txt”,”hello1.txt”]
eg:匹配目录下以a开头的txt文件??
>import glob
>glob.glob(“a*.txt”)(相同的方法glob可以查找以a开头的目录名下的文件)
7.文件内容的搜索和替换
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值