创建文件夹及其文件夹的副本,同时更改其名称

2024-04-20 08:55:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为在文件夹中的每个文件上运行的批处理脚本创建一个输出文件夹/文件。我希望当我在targetFolder中找到所有文件或文件夹时,我可以创建一个targetFolder\u输出,如果targetFolder中有一个文件夹,另一个文件夹,我可以在targetFolder\u out中创建另一个文件夹\u输出。你知道吗

最后我得到了C:\targetFolder\anotherFolder,它是重复的C:\targetFolder\anotherFolder\uoutput\anotherFolder\uoutput

我计划把所有的文件都放在那里,但我想如果我能克服这个文件夹的障碍,我可以处理一个文件。你知道吗

import os

targetFolder = "C:\\Users\\MyUserName\\Desktop\\tests"
outputFolder = targetFolder + "_output"

# Iterate over everything in the targetFolder
for directory, subdirectories, files in os.walk(targetFolder): 
    folderBasename = (os.path.basename(directory) )

    if not os.path.exists(outputFolder + "\\" + folderBasename + "_output"):
        os.makedirs(outputFolder + "\\" + folderBasename + "_output")

到目前为止,所有这些工作都是在我的桌面上创建一个文件夹“tests\u output”,其中包含以下文件夹:
测试输出\测试输出
测试\u输出\level2 \u输出
测试\u输出\level3 \u输出

我想看到的是:
测试\u输出\level2 \u输出\level3 \u输出

任何帮助都将不胜感激!你知道吗


Tags: 文件pathin文件夹outputostestsdirectory
1条回答
网友
1楼 · 发布于 2024-04-20 08:55:33
import os
class FCopy(object):
    def __init__(self, source):
        self.source = source
        self.target = os.path.join(source, '_output')
        if not os.path.exists(self.target):
            os.makedirs(os.path.abspath(self.target))
        self.lf, self.ld = [], []

    def walk(self, path):
        for x in (os.path.join(path, x) for x in os.listdir(path)):
            if x == self.target:continue
            if os.path.isfile(x):
                self.lf.append(x)
            elif os.path.isdir(x):
                self.ld.append(x)
                self.walk(x)
            #extra code if you want to handle symlinks

    def do(self):
        #if thats all you want,
        #code this directly in walk
        self.walk(self.source)

        for x in self.ld:
            x = x.replace(self.source, self.target)
            os.makedirs(x)
        for x in self.lf:
            x = x.replace(self.source, self.target)
            with open(x, 'w') as f:pass

f = FCopy('C:\\PerfLogs\\w\\tmp\\codemirror')
f.do()

你可以和我一起玩等等。 如果您只需要将源代码的结构增加一倍,那么可以在walk中移动文件/目录的创建,在相应的If…else中移动 别理我的目录,我只是在里面做个测试

相关问题 更多 >