我正在尝试将大量文件从一个目录复制到另一个目录。但是,在尝试通过使用Threading加快处理速度时,我收到一个错误消息,它抱怨打开的文件太多。目前,文件的测试批次大约为700多个,下面是代码。我该如何解决?在我的示例中,我将文件从网络上的一个位置复制到同一网络上的另一个位置,文件范围从1mb到100mb。
def copy_file_to_directory(file, directory):
'''
Description:
Copies the file to the supplied directory if it exists
'''
if os.path.isfile(file):
url = os.path.join(directory, os.path.basename(file))
try:
shutil.copyfile(file, url)
shutil.copystat(file, url)
return True
except IOError as e:
print (e)
return False
def copy_files_to_directory(files, directory):
'''
Directory:
Copy a list of files to directory, overwriting existing files
'''
if not os.path.isdir(directory):
os.makedirs(directory)
if not os.path.isdir(directory):
return False
workers = []
for x in files:
if os.path.isfile(x):
worker = threading.Thread(target=copy_file_to_directory, args=(x,directory))
workers.append(worker.start())
# wait until they are all done processing
for x in workers:
x.join()
return True
files = [] # list of files
copy_files_to_directory(files, 'C:/Users/John')
相关分类