【问题标题】:Python: Move files from multiple folders in different locations into one folderPython:将文件从不同位置的多个文件夹移动到一个文件夹中
【发布时间】:2022-12-25 14:53:07
【问题描述】:

我能够将所有文件从一个文件夹移动到另一个文件夹。我需要帮助才能将文件从多个源文件夹移动到目标文件夹。

import os
import shutil

source1 = "C:\\Users\\user\\OneDrive\\Desktop\\1\\"
source2 = "C:\\Users\\user\\OneDrive\\Desktop\\2\\"
destination = "C:\\Users\\user\\OneDrive\\Desktop\\Destination\\"

files = os.listdir(source1, source2)

for f in files:
    shutil.move(source1 + f,source2 + f, destination + f)

print("Files Transferred")

我收到错误:

files = os.listdir(source1, source2)
TypeError: listdir() takes at most 1 argument (2 given)

【问题讨论】:

标签: python file directory shutil


【解决方案1】:

这是解释器抱怨的行,您不能将两个目录传递给 os.listdir 函数

files = os.listdir(source1, source2)

你必须有一个嵌套循环(或列表理解)来做你想做的事情:

import os
sources = [source1, source2, ..., sourceN]
files_to_move = []
for source in sources:
    current_source_files =[f"{source}{filename}" for filename in os.listdir(source)]
    files_to_move.extend(current_source_files)
for f in files_to_move:
    shutil.move(f, f"{destination}{f.split(os.sep)[-1]}")

对于“更清洁”的解决方案,值得一看: https://docs.python.org/3/library/os.path.html#module-os.path

【讨论】:

    【解决方案2】:

    我找到了解决问题的办法。不幸的是,我没有自己找到它,但是当我找到这个问题的答案时,我遇到了这个问题,它解决了我遇到的问题。代码如下所示,就像我希望它的工作方式一样。

    导入 shutil 导入操作系统

    当前文件夹 = os.getcwd()

    list_dir = [文件夹 1, 文件夹 2, 文件夹 3]

    内容列表 = {} 对于索引,枚举中的 val(list_dir): path = os.path.join(current_folder, val) content_list[ list_dir[index] ] = os.listdir(路径)

    merge_folder = #目标文件夹路径

    merge_folder_path = os.path.join(current_folder, merge_folder)

    对于 content_list 中的子目录:

    for contents in content_list[sub_dir]:
    
        path_to_content = sub_dir + "/" + contents
    
        dir_to_move = os.path.join(current_folder, path_to_content )
    
    
        shutil.move(dir_to_move, merge_folder_path)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-17
      • 1970-01-01
      • 2015-07-30
      • 2016-01-25
      • 1970-01-01
      • 2022-08-21
      相关资源
      最近更新 更多