Python学习之文件处理
发布日期:2022-02-19 23:50:28 浏览次数:48 分类:技术文章

本文共 3083 字,大约阅读时间需要 10 分钟。

打开关闭

  • 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")

转载地址:https://blog.csdn.net/Leslie_Waong/article/details/105582527 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:现代通信技术之通信业务
下一篇:Python学习之用Requests和XPath多进程爬取有道单词数据

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月26日 22时22分07秒