如何使用Python将一个目录中的所有文件复制到另一个目录。 我将源路径和目标路径作为字符串。
答案 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)
。这要求目标文件夹尚不存在。如果您需要将文件复制到现有文件夹中,则上述方法效果很好!