[英]Python script to loop for files in subdirectories in order to change text and extension
我正在尝试遍历多个子目录中的文件,以便: 1- 在文件中添加一些文本(以 .ext 结尾) 2- 将每个文件的扩展名从 .ext 更改为 .ext2
当我在主目录中只有一个子目录时,脚本工作正常,但是当我尝试在多个子目录上运行脚本时,它显示:第 8 行,在 open(name, "r") as f: FileNotFoundError: [Errno 2 ] 没有这样的文件或目录:“这里是子目录的名称”
import os
directory = 'C:\\Users\\folder\\subfolders'
for dir, subdirs, files in os.walk(directory):
for name in files:
if name.endswith((".ext")):
with open(name, "r") as f:
XMLContent = f.readlines()
XMLContent.insert(6, '<XMLFormat>\n')
XMLContent.insert(40, '\n</XMLFormat>')
with open(name, "w") as f:
XMLContent = "".join(XMLContent)
f.write(XMLContent)
os.rename(os.path.join(dir, name), os.path.join(dir, name[:name.index('.ext')] +".ext1"))
上面是我在文件夹(1.Modified)中的子目录的屏幕截图。
我还创建了一个名为all的新文件夹,并将三个文件夹放入其中,对于每个文件夹,我创建了 2 个.ext类型的文件。
因此,我能够在它们的每个文件中写入并更改其名称。
import os
for root, dirs, files in os.walk("/Users/ghaith/Desktop/test/all"):
for file in files:
if file.endswith('.ext'):
path = root + '/' + file
with open(path, "r") as f:
content = f.readlines()
content.insert(1, '<XMLFormat>\n')
content.insert(3, '\n</XMLFormat>')
with open(path, "w") as f:
content = "".join(content)
f.write(content)
os.rename(path, path+'2')
输出:
<XML格式>
</XML格式>
您需要传递目录才能打开文件
with open(os.path.join(directory, name), "r") as f:
但是,我认为最好的方法是使用os.listdir()
在目录中循环
for item in os.listdir(directory):
if item.endswith(".ext"):
with open(os.path.join(directory, item), "r") as r:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.