Копирование файлов по сети с помощью Python - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь перебрать список путей к файлам, которые у меня есть по всей сети в моей компании.Путь к файлу имеет расположение различных дисков по всей сети.

Пользователь отправил файл однажды, и путь к файлу был пропущен в момент отправки.Однако файловый диск не одинаков для каждого пользователя и не совпадает с именем этого диска на моем компьютере.

Например: путь типа X: \ Users \ Submissions \ Bob'sФайл.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.")

1 Ответ

0 голосов
/ 27 февраля 2019

Ваш вопрос неясен.Он вращается вокруг аргументов source & dest, передаваемых в copyfile:

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

Трудно сказать, какие пути вы извлекаете из .CSV, но, очевидно, исходные файлы могут иметь «неправильную» букву диска,и / или каталог назначения copydir может иметь «неправильную» букву диска.Сценарий, очевидно, выполняется на нескольких машинах, и на этих машинах смонтированы различные буквы дисков.

Напишите вспомогательную функцию, которая находит «правильную» букву диска.Он должен принять путь, например, copydir, затем проверить список поиска, а затем вернуть исправленный путь.

Имея список букв дисков, вы можете просмотреть их и проверить, существует ли путь, используя os.path.exists().Верните первый найденный.

Используйте splitdrive() для анализа компонентов входного пути.

Предположим, что и для источника, и для приемника могут потребоваться исправленные буквы дисков.,Тогда вызов может выглядеть так:

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