Python调用robocopy从单个源复制到多个目标
因此,我看到了许多从多个目录复制到单个目录以及使用批处理文件复制到多个目录的示例。我正在尝试使用python和robocopy将源文件夹内容复制到同一服务器上的目标文件夹中。我想让这个过程比用相同的来源和不同的目的地键入每一行(如下所示)更自动化一些?解决这个问题的最好办法是什么?我已尝试在for循环中换行,但出现以下错误: TypeError:stat:path应该是字符串、字节、os.PathLike或整数,而不是列表Python调用robocopy从单个源复制到多个目标,python,Python,因此,我看到了许多从多个目录复制到单个目录以及使用批处理文件复制到多个目录的示例。我正在尝试使用python和robocopy将源文件夹内容复制到同一服务器上的目标文件夹中。我想让这个过程比用相同的来源和不同的目的地键入每一行(如下所示)更自动化一些?解决这个问题的最好办法是什么?我已尝试在for循环中换行,但出现以下错误: TypeError:stat:path应该是字符串、字节、os.PathLike或整数,而不是列表 subprocess.call(["robocopy"
subprocess.call(["robocopy", source_directory, destination_directory])
subprocess.call(["robocopy", source_directory, destination_directory2])
编辑:
source_directory = os.path.join("")
destination_directories = [os.path.join(source_directory, ""), os.path.join(source_directory, "")]
for dest in destination_directories:
shutil.copy(source_directory, destination_directories)
错误
回溯(最近一次呼叫最后一次):
文件“../Documents/Python\u Scripts/test.py”,
第25行,在shutil.copy中(源目录,目标目录)
文件“…\Local\Programs\Python\Python38\lib\shutil.py”,
第413行,如果os.path.isdir(dst)为副本:
文件“…AppData\Local\Programs\Python\Python38\lib\genericpath.py”,
第42行,在isdir st=os.stat中
TypeError:stat:path应该是字符串、字节、os.PathLike或整数,而不是列表
这是一个非常原始的问题-在copy()中使用dest
而不是destination\u目录
如果您使用print(dest)
和print(destination_directories)
则会看到不同之处。始终将问题中的完整错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)放置(不是注释)。还有其他有用的信息。似乎path
是一个包含许多元素的列表,您必须使用索引从列表中获取单个元素-即stat(path[0])
-或者您应该使用for
-循环-ie.for path:stat(item)
对缺少详细信息的错误表示歉意。今天有很多人尝试不同的方法来解决这个问题。这是我尝试的方法之一。我还尝试创建一个目录列表,但收到一个类似的错误。source\u directory=os.path.join(“”)destination\u directory=[os.path.join(source\u directory,“”),os.path.join(source\u directory,“”)for dest in dest in dest\u directory:shutil.copy(source\u directory,destination\u directory)这是删除某些个人项目后的全部错误。回溯(最后一次调用):文件“../Documents/Python_Scripts/test.py”,第25行,在shutil.copy(源目录,目标目录)文件“..\Local\Programs\Python 38\lib\shutil.py”,第413行,在copy if os.path.isdir(dst)文件“…AppData\Local\Programs\Python\Python 38\lib\genericpath.py”,第42行,在isdir中st=os.stat(s)TypeError:stat:path应该是字符串、字节、os.PathLike或整数,而不是列表始终有问题(不在注释中)-它将更具可读性,更多的人将看到它-也许其他人会有解决方案的想法。这真的很高兴听到,并让我克服了一个障碍,尽管shutil似乎没有合适的烫发功能,无法在windows中复制文件,所以现在看看robocopy。正在尝试为目标目录中的dest使用类似的代码:destination\u目录=[os.path.join(source\u目录,“D:\…\DevOps\PythonScripts\destination”)、os.path.join(source\u目录,“D:\…\DevOps\PythonScripts\destination1”):来自子流程导入调用([“robocy”,source\u目录,dest])新错误太长,无法发布,因此我改为robocopy,并在路径中添加了一个额外的\项,因为我得到了一个TypeError:bufsize必须是一个整数。该副本成功地复制到两个目录中,尽管它也在目标目录中创建了文件夹,所以我将不得不处理它。感谢你的耐心,因为我肯定还在学习
Traceback (most recent call last):
File ".../Documents/Python_Scripts/test.py",
line 25, in <module> shutil.copy(source_directory, destination_directories)
File "...\Local\Programs\Python\Python38\lib\shutil.py",
line 413, in copy if os.path.isdir(dst):
File "...AppData\Local\Programs\Python\Python38\lib\genericpath.py",
line 42, in isdir st = os.stat(s)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not list
for dest in destination_directories:
#shutil.copy(source_directory, destination_directories) # ERROR
shutil.copy(source_directory, dest)