Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更快地移动文件夹中的文件?_Python_File_Optimization_Shutil_File Move - Fatal编程技术网

Python 如何更快地移动文件夹中的文件?

Python 如何更快地移动文件夹中的文件?,python,file,optimization,shutil,file-move,Python,File,Optimization,Shutil,File Move,我正在寻找一种更优化的方法来将文件移动到文件夹中。目前,我有600k的文件,并希望将它们分割成40k大小的块单独的文件夹。Bellow是我目前使用的方法,但它看起来需要几天才能完成。如果您能提供任何帮助,我们将不胜感激 import os, glob, shutil os.chdir('filepath') list_of_file = os.listdir() #split list into 40k sized chunks chunks = [list_of_files[x: x + 40

我正在寻找一种更优化的方法来将文件移动到文件夹中。目前,我有600k的文件,并希望将它们分割成40k大小的块单独的文件夹。Bellow是我目前使用的方法,但它看起来需要几天才能完成。如果您能提供任何帮助,我们将不胜感激

import os, glob, shutil
os.chdir('filepath')
list_of_file = os.listdir()
#split list into 40k sized chunks
chunks = [list_of_files[x: x + 40000] for x in range(0, len(list_of_files), 40000)]
#make new folders for files
for x in range(0,16):
     os.mkdir('file path' + str(x))
#move files to folders
for x in range(0,16):
     for i in chunks[x]:
         if i in os.listdir():
             shutil.copy(os.path.join(i), 'file path' + str(x))

我怀疑你的脚本是I/O绑定的,这意味着它大部分时间都在复制文件-你应该对它进行分析以验证这一假设,看看是否是这样,除了使用不同的硬件之外,你几乎无法提高它的速度。我会看看这个函数。它将有很多秘密优化,这将使它比单独复制每个文件更快。需要多长时间?您有SSD还是HDD?操作速度可能受存储设备、使用的文件系统以及操作系统的IOps数(由于可能存在缓存)的限制。