Python学习之文件处理

2020-08-01 20:49:24 来源:易采站长站 作者:

Python学习之文件处理,路径,文件,目录,对象,模式

Python学习之文件处理

易采站长站,站长之家为您整理了Python学习之文件处理的相关内容。

打开关闭

open()
close()

with语句

 with open("./2/"+str(i)+".txt", 'r',encoding="utf-8") as f:
lines = f.readlines()

参数

描述
‘r’读取模式(默认值)
‘w’写入模式,当文件不存在时创建它,当文件存在时清除原有内容
‘x’独占写入模式,当文件不存在时创建它,当文件存在时引发异常
‘a’附加模式,在既有文件末尾继续写入
‘b’二进制模式(与其它模式结合使用)
‘t’文本模式(默认值,与其它模式结合使用)
‘+’读写模式(与其它模式结合使用)

读取写入

按字符或字节读写

f.write()
,
f.read()

按行读写
readline()
,
writelines()

注意,写入时并不会自动添加换行符。

去除文件中的空白行

def delblankline(infile, outfile):
infopen = open(infile, 'r',encoding="utf-8")#初始文件
outfopen = open(outfile, 'w',encoding="utf-8")#处理文件
lines = infopen.readlines()#按行读取
for line in lines:
if line.split():
outfopen.writelines(line)#非空写入新文件
else:
outfopen.writelines("")
infopen.close()
outfopen.close()
for i in range(1,158) :
delblankline("./1/"+str(i)+".txt", "./2/"+str(i)+".txt")

保留文件中的特定行数
for i in range(1,158) :
with open("./2/"+str(i)+".txt", 'r',encoding="utf-8") as f:
lines = f.readlines()#按行读取
lines = lines[:-4]#舍掉后四行
with open("./2/"+str(i)+".txt", 'w',encoding="utf-8") as f:
f.write(''.join(lines))#重新写入

os.path — 常用路径操作
os.path.isfile(path)

网上有说需要传绝对路径,但我使用相对路径也可以判断。官方文档似乎也没有提到。

如果path是现有的常规文件,则返回True。本方法会跟踪符号链接,因此,对于同一路径,islink()和isfile()都可能为True。
在 3.6 版更改:接受一个类路径对象。

path-like object -- 路径类对象
代表一个文件系统路径的对象。类路径对象可以是一个表示路径的str或者bytes对象,还可以是一个实现了os.PathLike 协议的对象。
一个支持os.PathLike协议的对象可通过调用os.fspath()函数转换为str或者bytes类型的文件系统路径;
os.fsdecode() 和 os.fsencode()可被分别用来确保获得str或bytes类型的结果。
此对象是由PEP 519引入的。


os.path.abspath(path)
返回路径path的绝对路径(标准化的)。
在大多数平台上,这等同于用normpath(join(os.getcwd(), path))的方式调用 normpath()函数。
在3.6版更改:接受一个类路径对象。

os.path.dirname(path)
返回路径path的目录名称。
这是将path传入函数split()之后,返回的一对值中的第一个元素。
在3.6版更改:接受一个类路径对象。

os.path.join(path, *paths)
合理地拼接一个或多个路径部分。
返回值是path和*paths所有值的连接,每个非空部分后面都紧跟一个目录分隔符 (os.sep),除了最后一部分。
这意味着如果最后一部分为空,则结果将以分隔符结尾。
如果参数中某个部分是绝对路径,则绝对路径前的路径都将被丢弃,并从绝对路径部分开始连接。
在Windows上,遇到绝对路径部分(例如 r'\foo')时,不会重置盘符。如果某部分路径包含盘符,则会丢弃所有先前的部分,并重置盘符。请注意,由于每个驱动器都有一个“当前目录”,所以os.path.join("c:", "foo") 表示驱动器 C: 上当前目录的相对路径(c:foo),而不是c:\foo。
在3.6版更改: 接受一个类路径对象 用于path和paths 。

os.path.exists(path)
如果path指向一个已存在的路径或已打开的文件描述符,返回True。
对于失效的符号链接,返回False。
在某些平台上,如果使用os.stat()查询到目标文件没有执行权限,即使path确实存在,本函数也可能返回False。
在3.3版更改:path现在可以是一个整数:如果该整数是一个已打开的文件描述符,返回True,否则返回False。
在3.6版更改: 接受一个类路径对象。

os.makedirs
递归目录创建函数。与mkdir()类似,但会自动创建到达最后一级目录所需要的中间目录。
mode参数会传递给mkdir(),用来创建最后一级目录,对于该参数的解释,请参阅mkdir()中的描述。要设置某些新建的父目录的权限,可以在调用makedirs()之前设置umask。现有父目录的权限不会更改。
如果exist_ok为False(默认值),则如果目标目录已存在将引发FileExistsError。

注解:如果要创建的路径元素包含pardir(如UNIX系统中的 "..") makedirs()将无法明确目标。
本函数能正确处理UNC路径。

引发一个审计事件os.mkdir,附带参数path、mode、dir_fd。

3.2新版功能:exist_ok参数。
在3.4.1版更改: 在 Python 3.4.1 以前,如果exist_ok 为True,且目录已存在,且mode与现有目录的权限不匹配,makedirs()仍会抛出错误。由于无法安全地实现此行为,因此在Python 3.4.1中将该行为删除。请参阅bpo-21082。
在3.6版更改: 接受一个类路径对象。
在3.7版更改: mode 参数不再影响新创建的中间目录的权限。


删除重复行
readDir = "./javaword.txt"
writeDir = "./jw.txt"
#生成一个集合
lines_seen = set()
#打开写入文件
outfile=open(writeDir,"w")
#打开读取文件
f = open(readDir,"r")
#判断是否重复
for line in f:
if line not in lines_seen:
outfile.write(line) #将不存在的写入
lines_seen.add(line)
#关闭写入文件
outfile.close()
print ("success")


作者:Leslie_Waong

以上就是关于对Python学习之文件处理的详细介绍。欢迎大家对Python学习之文件处理内容提出宝贵意见

微信扫一扫

易采站长站微信账号