本教程使用的课本是《Python编程:从入门到实践》,作者:[美] Eric Matthes
相信很多人有批量处理文本内容的需求,比如从网上下载了很多文本文件,但里面有些文字需要去除,用Python的OS类可以轻松实现。
比如在一个tmp目录中有三个文本文件,但文件的内容有一些“干扰字符”,我们要批量将这些字符去除,见下面截图。
清除干扰字符的思路是这样的:
1、一次只打开一个文件
2、一次性读取这个文件内容,并存储在一个字符串变量中。
3、用字符串替换函数,将“干扰字符”替换掉。
4、清空文件内容。
5、将替换后的字符串重新写入文件中。
具体的代码如下:
importospath ="D:\\tmp\\abc\\"dirs = os.listdir(path)# ---------------------批量替换文件内容-----------------------forfile indirs:withopen(os.path.join(path,file), 'r+') asf:s = f.read() s = s.replace("干扰字符", "").replace("干扰字符2", "").replace('干扰字符3','') #从前向后替换 f.seek(0, 0) #指针移到文件头 f.truncate() #清空文件 f.write(s) print(s)
Python代码解释:
1、path是要操作的目录,windows的路径中需要用两个反斜杠
2、函数os.listdir(path)是返回path目录中的所有文件列表,列表的元素是不包含路径的文件名。
3、for file in dirs:这句就是我们的for循环,遍历列表元素。
4、接来下用with as语句打开每个文件,os.path.join(path,file)的作用是组合路径和文件名,得到绝对路径,参数“r+”是读写方式打开。
5、接下来用f.read()函数读出所有文件内容,存储在字符串变量s中。
6、用s.replace()函数替换指定的字符串,第一个参数是要被替换的内容,第二个参数是替换成什么内容,这里我们替换成空值。多个replace()的执行顺序是从左到右,所以“干扰内容2和3”中的数字没变替换,如果写成这样,就能完全清除了:s = s.replace("干扰字符3", "").replace("干扰字符2", "").replace('干扰字符','')
7、f.seek(0, 0) 将文件的指针移动到文件开始的位置。
8、用f.truncate()清空文件。
9、用f.write(s)写入替换后的内容。
本文描述了如何使用python的os类进行文件的遍历,并批量进行文件内容的替换os类还有非常多的方法,有兴趣的大家可以自行百度。对于字符串的遍历,还可以使用正则表达式进行匹配替换,会强大很多,后续有机会再单独讲解,大家也可以自己百度。
#Python入门教程#
长按文末点赞送三连,支持本文作者多写点~