我想将测试应用于文件列表。经过测试的文件应移至目录“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”子目录。有什么想法吗?
答案 0 :(得分:0)
使用os.path.join()。示例:
os.path.join(outDir, 'Pass')
另外,我们不知道MoveFileToDirectory
做了什么。使用标准os.rename
:
os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo")
所以:
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 == 0
和True == 1
。