移动或复制列表中的文件(* .txt或* .csv)

问题描述 投票:0回答:2

完全是新的编码(2-3周前开始),我迫切需要帮助......

我试图将某些文件(* .tif文件)移动到目录(例如dir1)到另一个目录(dir2),如果它们在列表中。在我的情况下,让我们称这个列表为duplicates.csv

编辑:这就是duplicates.csv想要提出的想法。由于我不允许嵌入,这里是链接:image of duplicates.csv

所以现在我正在加载我的重复列表:

import os
import pandas as 
import shutil 

# Load the list from CSV
duplicates = pd.read_csv(r'\\galaxy\WETS_ScanTest\duplicates.csv', usecols=[1])
# Convert to pandas dataframe to list
duplicates = df_duplicates.values.tolist()

# These are the directories: 
dir1 = r'\\galaxy\WETS_ScanTest\TEMP2' # All the files are here
dir2 = r'\\galaxy\WETS_ScanTest\TEMP3' # Move to here IF it matches the `duplicates` list (aka: duplicates.csv)

当我尝试移动文件时

# Move the files to a different directory
for root, dirs, files in os.walk(dir1, topdown=True):
    for i in files:
        if i in duplicates:
            shutil.move((os.path.join(root, i)), dir2)

出于某种原因,我不能让这个工作。

编辑:它没有给出错误消息,但重复的文件不会移动到dir2

对这位新秀的任何帮助都非常感谢。

python python-3.x
2个回答
0
投票
import os
from os import path
import shutil
dir1 = r'\\galaxy\WETS_ScanTest\TEMP2' # All the files are here
dir2 = r'\\galaxy\WETS_ScanTest\TEMP3' # Move to here IF it matches the `duplicates` list (aka: duplicates.cs

files = [i for i in os.listdir(dir1) if i.endswith(("csv", "txt")) and path.isfile(path.join(dir1, i))]
for f in files:
    shutil.move(path.join(dir1, f), dir2)

您可以使用此代码段


0
投票

你可以将 duplicates_tuple = ("csv", "txt") files = [i for i in os.listdir(dir1) if i.endswith(duplicates_tuple) and path.isfile(path.join(dir1, i))] 改为 duplicates_tuple = tuple(pd.read_csv(r'\galaxy\WETS_ScanTest\duplicates.csv', usecols=[1]).values.tolist()) files = [i for i in os.listdir(src) if i in (duplicates_tuple) and path.isfile(path.join(src, i))]

© www.soinside.com 2019 - 2024. All rights reserved.