Python:无法创建子目录

时间:2015-08-05 10:51:44

标签: python

我想将测试应用于文件列表。经过测试的文件应移至目录“Pass”;其他应该移动到目录“失败”。

因此输出目录应包含子目录“Pass”和“Fail”。

这是我的尝试:

        if(<scan==pass>) # Working fine up to this point
            dest_dir = outDir + '\\' + 'Pass'  # The problem is here
            print("Pass", xmlfile)
            MoveFileToDirectory(inDir, xmlfile, dest_dir)
        else:
            dest_dir = os.path.dirname(outDir + '\\' + 'Fail')
            print("Fail: ", xmlfile)
            MoveFileToDirectory(inDir, xmlfile, dest_dir)

但是,我的代码是将文件移动到输出目录而不是创建“Pass”或“Fail”子目录。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用os.path.join()。示例:

os.path.join(outDir, 'Pass')

See this SO post

另外,我们不知道MoveFileToDirectory做了什么。使用标准os.rename

os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo")

See this SO post

所以:

source_file = os.path.join(inDir, xmlfile)
if(conditionTrue):
    dest_file = os.path.join(outDir, 'Pass', xmlfile)
    print("Pass: ", xmlfile)
else:
    dest_file = os.path.join(outDir, 'File', xmlfile)
    print("Fail: ", xmlfile)
os.rename(source_file, dest_file)

答案 1 :(得分:0)

只创建一次目录:

import os

labels = 'Fail', 'Pass'
dirs = [os.path.join(out_dir, label) for label in labels]
for d in dirs:
    try:
        os.makedirs(d)
    except EnvironmentError:
        pass # ignore errors

然后你可以将文件移动到创建的目录中:

import shutil

print("%s: %s" % (labels[condition_true], xmlfile))
shutil.move(os.path.join(out_dir, xmlfile), dirs[condition_true])

该代码利用了Python中的False == 0True == 1