在Python中复制多个文件

时间:2010-08-03 14:54:57

标签: python file copy

如何使用Python将一个目录中的所有文件复制到另一个目录。 我将源路径和目标路径作为字符串。

6 个答案:

答案 0 :(得分:110)

您可以使用os.listdir()获取源目录中的文件os.path.isfile()以查看它们是否是常规文件(包括* nix系统上的符号链接),以及shutil.copy要执行的操作复制。

以下代码仅将源目录中的常规文件复制到目标目录中(我假设您不希望复制任何子目录)。

import os
import shutil
src_files = os.listdir(src)
for file_name in src_files:
    full_file_name = os.path.join(src, file_name)
    if os.path.isfile(full_file_name):
        shutil.copy(full_file_name, dest)

答案 1 :(得分:23)

如果您不想复制整个树(包含子目录等),请使用或glob.glob("path/to/dir/*.*")获取所有文件名列表,循环遍历列表并使用shutil.copy复制每个文件名文件。

for filename in glob.glob(os.path.join(source_dir, '*.*')):
    shutil.copy(filename, dest_dir)

答案 2 :(得分:10)

查看shutil in the Python docs,特别是copytree命令。

答案 3 :(得分:4)

FROM ruby:2.4-stretch
WORKDIR /app
ADD . /app/
RUN set -uex; \
    bundle install; \
    adduser -D rubyapp; \
    mkdir -p /app/data; \
    chown rubyapp /app/data
USER rubyapp
CMD [ "ruby", "whatever.rb" ]

答案 4 :(得分:3)

import os
import shutil
os.chdir('C:\\') #Make sure you add your source and destination path below

dir_src = ("C:\\foooo\\")
dir_dst = ("C:\\toooo\\")

for filename in os.listdir(dir_src):
    if filename.endswith('.txt'):
        shutil.copy( dir_src + filename, dir_dst)
    print(filename)

答案 5 :(得分:1)

这是递归复制功能的另一个示例,该功能使您可以一次将一个目录(包括子目录)的内容复制一个文件,这是我用来解决此问题的方法。

import os
import shutil

def recursive_copy(src, dest):
    """
    Copy each file from src dir to dest dir, including sub-directories.
    """
    for item in os.listdir(src):
        file_path = os.path.join(src, item)

        # if item is a file, copy it
        if os.path.isfile(file_path):
            shutil.copy(file_path, dest)

        # else if item is a folder, recurse 
        elif os.path.isdir(file_path):
            new_dest = os.path.join(dest, item)
            os.mkdir(new_dest)
            recursive_copy(file_path, new_dest)

编辑:如果可以,请绝对使用shutil.copytree(src, dest)。这要求目标文件夹尚不存在。如果您需要将文件复制到现有文件夹中,则上述方法效果很好!