【问题标题】:Copying files across a network with Python使用 Python 跨网络复制文件
【发布时间】:2019-07-20 12:43:18
【问题描述】:

我正在尝试遍历我在公司整个网络中拥有的文件的文件路径列表。文件路径包含整个网络中各种驱动器的位置。

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

例如:像 X:\Users\Submissions\Bob's File.xlsx 这样的路径可能与相同的驱动器和文件一致,但在我的机器上命名不同: K:\Users\Submissions\Bob 的文件.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.")

【问题讨论】:

    标签: python-3.x pandas filepath shutil


    【解决方案1】:

    您的问题不清楚。它围绕传递给 copyfile 的源和目标参数:

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

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

    编写一个查找“正确”驱动器号的辅助函数。它应该接受像copydir 这样的路径名,然后探测一个搜索列表,然后返回一个更正的路径名。

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

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

    假设 source 和 dest 可能都需要修复它们的驱动器号。那么调用可能如下所示:

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

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2020-07-21
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多