繁体   English   中英

Python脚本循环子目录中的文件以更改文本和扩展名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM