文件操作一般包括文件的读写,文件夹的创建,文件夹的删除等。
第一部分:python文件读写的基本操作
python打开文件一般使用 open函数:
open
(
file
,
mode='r'
,
buffering=-1
,
encoding=None
,
errors=None
,
newline=None
,
closefd=True
,
opener=None
)
file为文件名或文件描述符;
mode为打开方式:'r'为只读,'w'为可写,他会删除文件中原有的东西,'x'写模式,只能在文件不存在的时候创建,存在会报错,'a'写模式,在文件尾部追加,'b'二进制模式,'t'默认方式
buffering为缓存的大小,一次最大的写入量
encoding为文件模式比如UTF-8等
errors为错误信息
newline为设置换行的模式,只在文本模式生效
closefd:如果给定文件名,该项为false,则关闭文件时文件描述符处于打开状态,如果给定文件名,则该项必须为true
file='test.txt'
a=open(file,'rb')
print(a.read())
a.close()
可以使用with as 语句,做到事先设置,事后清理的工作。
with所求值的对象必须要有一个__enter()__方法,一个__exit()__方法,with之后的语句被调用时,调用__enter()__方法,返回值将被赋给as后的对象,作用域结束后将调用__exit()__方法。这样会省去手动关闭的麻烦
file='test.txt'
with open(file,'rb') as fil:
print(fil.read())
第二部分:文件夹的操作
文件夹操作一般需要引入os模块或者shutil模块,详细介绍参见https://www.cnblogs.com/tkinter/p/5631213.html
将文件的操作封装为一个类,其成员参数包括当前的路径path,当前文件夹下的文件列表fileList,当前文件夹下的所有文件路径allFileName
主要部分为获取文件夹下的所有文件,如果类型为文件夹,需要递归文件夹统计
import os
class fileTest(object):
allfilename=[]#存放所有文件路径
fileCount={}#存放不同文件的行数
filelist=[]#存放当前路径下的文件和文件夹名称
filterList=[]#过滤项
path=''#路径
def getCurrentPath(self):#获取当前的工作路径
self.path=os.getcwd()
return self.path
def getAllFile(self):#获取工作路径下的所有文件和文件夹
self.fileList=os.listdir(self.path)
return self.fileList
def setPath(self,pathName):#设置工作路径
self.path=pathName
return self.path
def getAllFileName(self):#得到当前目录下的所有文件路径
temp=self.getAllFile()
for files in temp:
files=self.path+'\\'+files
print(files)
if os.path.isdir(files):#如果是文件夹需要递归
temFileTest=fileTest()
temFileTest.setPath(files)
self.allfilename+=temFileTest.getAllFileName()
else:#不是文件夹直接添加
self.allfilename.append(files)
return self.allfilename
def getLineCount(self):
self.getAllFileName()#更新所有的文件
for file in self.allfilename:
if os.path.splitext(file)[1] in self.filterList:
with open(file,'rb') as f:
self.fileCount[file]=len(f.readlines())
def getAllCount(self):#统计总的行数
self.getLineCount()
cnt=0
for value in self.fileCount.values():
cnt+=value
return cnt
test=fileTest()#创建对象
print(test.getCurrentPath())#打印当前的工作路径
test.setPath('E:\PythonData')#设置处理的路径
print(test.getAllFile())#打印设置路径下的文件夹和文件名
print(test.getAllFileName())#打印路径下的所有文件路径
test.filterList=['.py']#设置过滤项
test.getLineCount()#得到满足过滤条件的文件的行数
print(test.fileCount)#打印相关行数
print(test.getAllCount())#打印总的行数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)