遍历目录中的所有文件并查找并替换文本 - Python
问题描述:
宝贝全新。这是弗兰肯斯坦从一些类似的话题一起,没有一个似乎涵盖了在文件循环中嵌套查找和替换的必要步骤。遍历目录中的所有文件并查找并替换文本 - Python
我试图遍历文件夹中的每个文件(不递归,我只有一个文件夹级别)的特定类型(这里列为'.LIC')并替换一小段文字。以下是我所能接近的:
import glob, os, fileinput
from glob import glob
root_dir = r"myPath"
os.chdir(root_dir)
for file in glob, glob('*.LIC'):
filename = str(file)
with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
for line in file:
print(line.replace('findText', 'replaceText'), end='')
正如你可以想象的,这是游泳。错误代码位于下方。
OSError Traceback (most recent call last)
<ipython-input-61-e2fd0e9a5df9> in <module>()
6 filename = str(file)
7 with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
----> 8 for line in file:
9 print(line.replace('findText', 'replaceText'), end='')
10
C:\Users\Me\Anaconda3\lib\fileinput.py in __next__(self)
246 def __next__(self):
247 while True:
--> 248 line = self._readline()
249 if line:
250 self._filelineno += 1
C:\Users\Me\Anaconda3\lib\fileinput.py in _readline(self)
333 pass
334 # The next few lines may raise OSError
--> 335 os.rename(self._filename, self._backupfilename)
336 self._file = open(self._backupfilename, self._mode)
337 try:
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: '<function glob at 0x00000000013D3400>' -> '<function glob at 0x00000000013D3400>.bak'
我认为我的问题是嵌套对“文件”的引用,但我不确定如何解决此问题。
感谢您提前给予帮助。
答
您应该循环超过glob
的结果,而不是一个元组的函数对象glob
:
for filename in glob('*.LIC'):
with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
for line in file:
print(line.replace('findText', 'replaceText'), end='')
+0
它的活着!但真的,这工作很好。谢谢。 – DavidU
Frankenstein'ed一起 - 哈哈:-) –