我正在尝试读取文件夹中的一堆文件,处理内容并保存。由于我有很多文件,因此需要并行执行操作。
这是我尝试的代码,但是当我运行它时,什么也没有发生,我什至没有得到任何错误。它只是卡住了。请注意,如果我直接使用带有文件名的EXPECT_NO_THROW (ClassOne {classThree});
,它将起作用。
process_file()
我当时想也许是因为from multiprocessing import Pool
from pathlib import Path
import torch
source_dir = Path('source/path')
target_dir = Path('target/path')
def process_file(file):
with open(file, 'r') as f:
result = ... # do stuff with f
target = target_dir / file.name
torch.save(result, target)
p = Pool(10)
p.map(process_file, source_dir.iterdir())
产生了一个生成器,但是我对.iterdir()
也遇到了同样的问题。我想念什么?
谢谢。
答案 0 :(得分:0)
您的函数process_file
需要文件的完整路径才能打开文件。
您可以使用os
模块将当前工作目录与感兴趣的文件夹一起加入。
full_paths = []
for el in source_dir.iterdir():
full_paths.append(os.path.join(os.getcwd(),str(el)))
您现在可以正确地调用process_file
方法,以迭代full_paths
列表中存在的元素。
这应该可以完成