我想对子目录中的所有文件执行操作,并将输出放在另一个目录中。例如,在/ Pictures /中有子目录/ January,/ February / etc和其中的imgages。我想对图像执行操作并将输出放到/ Processed /及其子目录/ January,/ Februady等。
我想这可以解决这个问题,但我真的可以使用一些帮助:
import os
path = '/Pictures/'
outpath = '/Processed/'
for subdir, dirs, files in os.walk(path):
#do something with files and send out put to corresponding output dir
答案 0 :(得分:1)
这应该给你基本的结构:
import os
path = 'Pictures/' # NOTE: Without starting '/' !
outpath = 'Processed/'
for old_dir, _, filenames in os.walk(path):
new_dir = old_dir.replace(path, outpath, 1)
if not os.path.exists(new_dir):
print "Creating %s" % new_dir
os.makedirs(new_dir)
for filename in filenames:
old_path = os.path.join(old_dir, filename)
new_path = os.path.join(new_dir, filename)
print "Processing : %s -> %s" % (old_path, new_path)
# do something with new_path
它在'Processed/'
中创建与'Pictures/'
中相同的子文件夹结构,并迭代每个文件名。
对于文件夹中的每个文件,您都会获得new_path
变量:
old_path
为'Pictures/1/test.jpg'
,new_path
为'Processed/1/test.jpg'
答案 1 :(得分:0)
这基本上遍历目录的所有文件夹,获取其文件;使用performFunction()
执行某些操作并写入同一文件。 您可以修改此内容以写入不同的路径!
def walkDirectory(directory, filePattern):
for path, dirs, files in os.walk(os.path.abspath(directory),followlinks=True):
for filename in fnmatch.filter(files, filePattern):
try:
filepath = os.path.join(path, filename)
with open(filepath) as f:
s = f.read()
s = performFunction()
with open(filepath, "w") as f:
print filepath
f.write(s)
f.flush()
f.close()
except:
import traceback
print traceback.format_exc()
希望它有所帮助!