Я использую python 2.5 на Ubuntu, и в той же названной сети существует машина machine1
. Папка совместно используется.
Как к получить файл в определенной папке той машины?
Я попробовал без успеха:
urllib.urlopen('\\machine1\folder\file.txt')
В Linux есть утилита под названием smbmount
, которую, как мне кажется, можно найти в пакете smbutils.
Это утилита командной строки, которая монтирует общий ресурс Windows в каталог на локальном компьютере, необязательно с именем пользователя / паролем.
smbmount - это, как мне кажется, утилита, работающая от имени пользователя root, поэтому я не знаю, подходит ли она вам. Может быть, его можно использовать как пользователь.
Вы можете либо смонтировать общий ресурс по умолчанию на машине Linux, получая доступ к файлам на нем как локальным файлам, либо вы можете выполнить smbmount / smbumount из сценария python с помощью exec или чего-то подобного.
mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare
Имя пользователя и пароль могут быть записаны в файл для некоторой безопасности. См. Справочную страницу .
Если вам нужно что-то полностью на Python, посмотрите pysmb . В Google используются следующие термины: python, smb, CIFS.
urllib
не понимает протокол SMB. Вам нужно будет использовать gio
через pygobject, чтобы получить файл.
Вам следует искать файловый браузер по умолчанию.
Затем вы можете выполнить процесс и передать нужную папку в качестве аргумента (smb: // machine1 / folder /).
Например, в Windows вы бы сделали:
execl("explorer.exe", "D:")
Попробуйте найти путь к вашему файловому браузеру (в большинстве случаев это Nautilus).
Итак:
execl("/bin/nautilus", "smb://.../")
Некоторая информация о execl
Если папка является общей, я думаю, ее следует смонтировать в ~ / .gvfs. Возможно, вы можете просто использовать open
в пути, как вы видите его в ~ / .gvfs.