匹配 CSV 文件中的文件名,然后将这些文件移动到新目录

Posted

技术标签:

【中文标题】匹配 CSV 文件中的文件名,然后将这些文件移动到新目录【英文标题】:Matching File Names from a CSV file then move those Files to a New Directory 【发布时间】:2020-12-22 07:13:40 【问题描述】:

我有一个装满文件的文件夹,例如 txt 文件、csv 文件、html 文件、pdf 文件。然后我有另一个 csv 文件,其中包含该文件夹中我需要的文件的名称。我想将文件移动到与 csv 文件“名称列”中的​​文件名匹配的另一个文件夹。

文件夹中的示例文件名:

doggy.csv
cattodog.txt
birdy.pdf
eagle.pdf
:
:
wolfy.pdf.txt.csv

我的 csv 文件:

ID  Name
001 doggy.csv
002 cattodog.txt
003 eagle.pdf
:
:
n  wolfy.pdf.txt.csv

我想知道是否有任何快速的方法可以创建一个代码,该代码可以遍历与我的 csv 文件中的“名称列”匹配的文件夹,然后将这些匹配文件移动到另一个文件夹?

谢谢!

【问题讨论】:

您可以选择osshutil 包。据我了解,这与熊猫无关,因为它不会被矢量化。 但我必须将我的 csv 文件读入 pandas,然后提取名称列以匹配我文件夹中的文件 是的,你是对的。我想说的是,尽管您使用了 pandas,但您必须逐行应用或迭代。因此,它无助于矢量化。我建议你使用csv-shutil 组合不带熊猫。 谢谢! @MohamedThasinah 我会努力做到这一点 【参考方案1】:

此代码可能会有所帮助:

import pandas as pd 
import shutil

my_csv = pd.read_csv('my_files.csv')

file_names = my_csv.Name.tolist()


for file_name in file_names:
    shutil.move("path/to/filesfolder/".join(file_name), "path/to/newfolder/".join(file_name))

另外,我建议将您的姓名保存在一个 txt 文件中,并使用 bash 对他们的文件进行 mv。

def save_to_txt(file_list):
    with open('file_names.txt', 'w+') as wfile:
        for file in file_list:
            wfile.write(file + '\n')

然后在你的命令行中:

for file in $(cat path/to/file_names.txt); do mv path/to/"$file" path/to/newfolder; done

【讨论】:

非常感谢!我将尝试使用它并将其与我现有的代码结合起来。【参考方案2】:

您可以先使用pandas 读取包含文件名的 csv 文件,然后循环遍历它:

import pandas as pd
import os, shutil

## read filenames using pandas
df_files = pd.read_csv("csvContainingFilestoMove.csv")

## set file locations
fileOrigin = "./" #file origin
fileDest="destinationPath/" #file destination

for ff in df['Name'].tolist():
    print(f"Moving file ff")
    shutil.move(fileOrigin+ff, fileDest) #shutil to move file

您还可以使用if not os.path.exists(fileDest+ff) 来检查目标文件是否已存在,以防您想使用copy 而不是move

【讨论】:

太棒了!太感谢了。我会试试的。

以上是关于匹配 CSV 文件中的文件名,然后将这些文件移动到新目录的主要内容,如果未能解决你的问题,请参考以下文章

将 CSV 文件的内容复制到现有工作簿,然后移动 CSV

从 CSV/TXT 创建文件夹并将匹配列移动到 Powershell 或 Batch 中的新目录

我需要帮助创建一个按钮,用于保存用户当前位置,如果他们移动,则需要多个其他位置,以便我可以通过CSV文件导出这些位置

使用python批量将匹配行附加到csv文件

列出与R中的完整路径模式匹配的所有文件

将CSV文件上传到MySQL服务器