使用Python在网络上复制文件

时间:2019-02-26 21:40:21

标签: python-3.x pandas filepath shutil

我试图遍历公司整个网络中所有文件的文件路径列表。文件路径在整个网络中具有各种驱动器的位置。

用户曾经提交过文件,并且文件路径在提交时已通过。但是,每个用户的文件驱动器都不相同,并且在我的计算机上该文件驱动器的名称也不相同。

例如: X:\ Users \ Submissions \ Bob的File.xlsx 之类的路径可能与同一驱动器和文件重合,但在我的计算机上的名称不同: K:\ Users \ Submissions \ Bob的File.xlsx

由于多种原因,每个用户都有可能对该特定驱动器使用不同的字母。

有没有一种方法可以使传入的模式字符串足够聪明,从而能够找到正确的目录并找到该文件?任何想法都很棒。

谢谢

import pandas as pd
import shutil as sh

copydir = r"C:\Users\me\Desktop\PythonSpyderDesktop\Extractor\Models"

file_path_list = r"C:\Users\me\Desktop\PythonSpyderDesktop\Extractor\FilePathList.csv"
data = pd.read_csv(file_path_list)

i = 1 #Start at 2nd row
for i in range(1, len(data)):
    try:
        sh.copyfile(data.FilePath[i], copydir)
        print("Copied over file: " + data.FilePath[i])
    except:
        print ("File not found.")

1 个答案:

答案 0 :(得分:0)

您的问题尚不清楚。它围绕传递给copyfile的source和dest参数:

    sh.copyfile(data.FilePath[i], copydir)

很难说出您要从.CSV中提取什么路径名,但是显然源文件可能具有“错误的”驱动器号,和/或目标目录copydir可能具有“错误的”驱动器号。 。该脚本显然可以在多台计算机上运行,​​并且这些计算机上安装了不同的驱动器号。

编写一个帮助函数,以找到“正确的”驱动器号。它应接受copydir之类的路径名,然后探查搜索列表,然后返回更正的路径名。

给出驱动器号列表,您可以遍历驱动器号并使用os.path.exists()测试路径名是否存在。返回找到的第一个。

使用splitdrive()解析输入路径名的组成部分。

假设源和目标可能都需要修复其驱动器号。然后呼叫可能看起来像这样:

    sh.copyfile(fix_path(data.FilePath[i]), fix_path(copydir))