我试图遍历公司整个网络中所有文件的文件路径列表。文件路径在整个网络中具有各种驱动器的位置。
用户曾经提交过文件,并且文件路径在提交时已通过。但是,每个用户的文件驱动器都不相同,并且在我的计算机上该文件驱动器的名称也不相同。
例如: 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.")
答案 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))