Как получить файл из сетевой директории Windows и перейти в мою директорию проекта Python Django? - PullRequest
0 голосов
/ 06 июня 2018

Я программирую на MacOS и использую Python + Django.Я должен получить некоторые файлы в нашей частной сети (сеть Windows) и переместить их на наш сервер.Там Python / Django прочитает эти файлы и сохранит данные в базе данных.Как я могу это сделать?

Что я пробовал

source_path = "smb://server-name/GRUPOS/TECNOLOGIA_INFORMACAO/Dashboard Diretoria/"
dest_path = "./static/reports/". # This is my static folder where I want to move the file
file_name = "general_reports.csv"
shutil.copyfile(source_path + file_name, dest_path + file_name)

Это выдает следующую ошибку:

[Errno 2]Нет такого файла или каталога: 'smb: // имя_сервера / GRUPOS / TECNOLOGIA_INFORMACAO / Dashboard Diretoria / general_reports.csv'

Этот путь (source_path) я только что скопировал и пропустил из Finder, поэтому... Я думаю, что это правильно.Я уже искал в StackOverflow и пробовал другие методы, такие как "r" перед путем ... Ничего ....

Используемые технологии

  • Python 3.6;
  • Django 3.0.5;
  • Mac OSX;
  • Сеть Windows.

Спасибо за помощь и терпение.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Прежде всего, спасибо @Van de Wack.

Это полное решение:

  1. Установите библиотеку pysmb (https://pypi.org/project/pysmb/):

    pip install pysmb

  2. Импорт библиотеки в ваш код:

    из smb.SMBConnection import SMBConnection

  3. Следующий код является примером для перечисления всех каталогов:

    server_ip = "10.110.10.10" # Take your server IP - I have put a fake IP :)
    server_name = 'myserver' # The servername for the IP above
    share_name = "GRUPOS" # This is the principal folder of your network that you want's to connect
    network_username = 'myuser' # This is your network username
    network_password = '***' # This is your network password
    machine_name = 'myuser@mac-mc70006405' # Your machine name
    conn = SMBConnection(network_username, network_password, machine_name, server_name, use_ntlm_v2 = True)
    assert conn.connect(server_ip, 139)
    files = conn.listPath(share_name, "/TECNOLOGIA_INFORMACAO/Dashboard Diretoria/")
    for item in files:
       print(item.filename)
    
0 голосов
/ 06 июня 2018

Вам нужно импортировать клиентскую библиотеку SMB для python или подключить этот диск перед тем, как работать там

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...