将多个文件复制到多个目录的脚本

Script to copy multiple files to multiple directories

我有一个包含很多文件的目录:

abc.txt
def.txt
ghi.txt
   etc.

我写了一个脚本,它根据每个文件的名称(目录 abc、def、ghi 等)创建一个新目录。

现在我想复制文件 abc.txt 到目录 abc,文件 def.txt 到目录 def 等等。

我正在尝试使用 shutil 执行此操作,但我的脚本不起作用。

import os, glob, shutil

myfiles = glob.glob("/users/source_directory/*.*")
for f in myfiles:
    file_name, file_extension = os.path.splitext(f)
    destination = (os.path.join('/users/destination_directory/',file_name))
    shutil.copy(f, (os.path.join(destination,file_name)))

这会在源目录中生成源文件的副本,减去其文件扩展名。关于如何让它按预期工作有什么建议吗?

首先,您的 file_name 变量不仅包含文件名,还包含文件的整个绝对路径。这意味着目标变量的 os.path.join 命令会通过 /users/source_directory.

覆盖 /users/destination_directory 路径

其次,您必须创建新目录。

第三,我还添加了复制过程的文件扩展名。

以下代码正在执行您的工作。

import os, glob, shutil

myfiles = glob.glob("/users/source_directory/*.*")
for f in myfiles:
    file_path, file_extension = os.path.splitext(f)
    file_name = os.path.basename(file_path)
    destination = os.path.join('/users/destination_directory/',file_name)
    os.mkdir(destination)
    shutil.copy(f, (os.path.join(destination,file_name+file_extension)))