我想更改下面的代码
for directory, dirs, files in os.walk(directory_1):
do_something()
for directory, dirs, files in os.walk(directory_2):
do_something()
到此代码:
for directory, dirs, files in os.walk(directory_1) + os.walk(directory_2):
do_something()
我得到了错误:
不支持+:'generator'和'generator'的操作数类型
如何在Python中连接两个生成器?
如果你想从一个已知目录之前和之后获取文件路径列表,你可以这样做:
for r,d,f in os.walk(current_dir):
for dir in d:
if dir =='after':
after_dir = os.path.abspath(os.path.join(current_dir, dir))
for r,d,f in os.walk(after_dir):
after_flist.append([os.path.join(r,file)for file in f if file.endswith('json')])
elif dir =='before':
before_dir = os.path.abspath(os.path.join(current_dir, dir))
for r,d,f in os.walk(before_dir):
before_flist.append([os.path.join(r,file)for file in f if file.endswith('json')])
我知道有更好的答案,这是我觉得简单的代码。
如果你只需要做一次,不希望再导入一个模块,有一个简单的解决方案…
只做:
for dir in directory_1, directory_2:
for directory, dirs, files in os.walk(dir):
do_something()
如果你真的想“联接”两个生成器,那么做:
for directory, dirs, files in (
x for osw in [os.walk(directory_1), os.walk(directory_2)]
for x in osw
):
do_something()
如果你想从一个已知目录之前和之后获取文件路径列表,你可以这样做:
for r,d,f in os.walk(current_dir):
for dir in d:
if dir =='after':
after_dir = os.path.abspath(os.path.join(current_dir, dir))
for r,d,f in os.walk(after_dir):
after_flist.append([os.path.join(r,file)for file in f if file.endswith('json')])
elif dir =='before':
before_dir = os.path.abspath(os.path.join(current_dir, dir))
for r,d,f in os.walk(before_dir):
before_flist.append([os.path.join(r,file)for file in f if file.endswith('json')])
我知道有更好的答案,这是我觉得简单的代码。