使用python将文件复制到另一个文件夹

时间:2019-12-24 11:44:06

标签: python shutil

可以说,我有一个包含10k文件的源文件夹,我想将1k文件复制到另一个文件夹。尝试了以下方法,它可以工作,但是,有什么方法可以更有效地做到这一点?

sourceFiles = os.listdir("/source/")
destination = "/destination/"

for file in sourceFiles[0 : 1000]:
    shutil.copy(file, destination)

这就是我的感觉,我正在将10k个文件加载到列表变量中,并遍历列表中的每个元素1k次,将不需要的数据加载到RAM中,这对我来说并不好。有没有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您使用的是Python 3,则pathlib.Path.iterdir是更好的选择:

from pathlib import Path

source = Path('/source')
target = Path('/destination')

counter = 0

for obj in source.iterdir():
    if obj.is_file():
        obj.rename(target / obj.name)
        counter += 1
    if counter > 1000:
        break

它使用生成器,语法更简洁,恕我直言。

在内存效率上也更好。看:

Python 3.7.5 (default, Dec 15 2019, 17:54:26) 
[GCC 9.2.1 20190827 (Red Hat 9.2.1-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from sys import getsizeof
>>> from os import listdir
>>> from pathlib import Path
>>> files = listdir('/usr/bin')
>>> usrbin = Path('/usr/bin')
>>> getsizeof(files)
26744
>>> getsizeof(usrbin.iterdir())
128
>>>