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

2024-09-30 22:13:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件夹的文件,如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文件中的“名称列”匹配的文件夹,然后将这些匹配的文件移动到另一个文件夹

谢谢


Tags: 文件csvtxt文件夹名称id示例pdf
2条回答

此代码可能有助于:

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

您可以首先使用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

相关问题 更多 >