我正在尝试遍历我公司整个网络中的文件的文件路径列表。文件路径具有遍布网络的各种驱动器的位置。
用户一次提交文件,文件路径在提交时传递。但是,文件驱动器对于每个用户都不相同,并且与我的计算机上命名的驱动器不同。
例如:像X:\ Users \ Submissions \ Bob的File.xlsx这样的路径可能与同一个驱动器和文件重合,但在我的机器上命名不同:K:\ Users \ Submissions \ Bob's 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.")
你的问题不清楚。它围绕传递给copyfile的source和dest参数:
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))