Pregunta

Estoy usando Python 2.5 en Ubuntu, y hay una máquina en la misma red llamada machine1. La carpeta es compartida.

¿Cómo obtener un archivo en una carpeta específica de esa máquina?

Lo he intentado, sin éxito:

urllib.urlopen('\\machine1\folder\file.txt')
¿Fue útil?

Solución

Linux tiene una utilidad llamada smbmount, que se puede encontrar en el paquete smbutils, creo.

Esta es una utilidad de línea de comandos que monta una compartir Windows en un directorio en la máquina local, opcionalmente con nombre de usuario/contraseña.

SMBmount es creo que una utilidad se ejecuta como raíz, por lo que si es adecuado para ti, no lo sé. Tal vez se pueda usar como usuario.

Puede montar la compartir de forma predeterminada en la máquina Linux, accediendo así a los archivos en él como archivos locales, o puede hacer el SMBMount / SmbuMount dentro del script de Python con Exec o algo así.

mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare

El nombre de usuario y la contraseña se pueden escribir en un archivo para alguna seguridad. Comprobar el página del hombre.

Si necesitas algo totalmente Python, eche un vistazo a pysmb. Los términos para Google son Python, SMB, CIFS.

Otros consejos

urllib no entiende el protocolo SMB. Necesitarás usar gio a través de pygobject para recuperar el archivo.

Si se comparte la carpeta, creo que debe montarse en ~/.gvfs. Quizás simplemente puedas usar open en el camino como lo ves en ~/.gvfs.

Debe buscar el navegador de archivo predeterminado.

Y luego puede ejecutar el proceso y pasar en la carpeta que desee como argumento (smb: // máquina1/carpeta/).

Por ejemplo, en Windows lo haría:

execl("explorer.exe", "D:")

Intente buscar la ruta en su navegador de archivos (la mayoría de las veces es Nautilus).

Asi que:

execl("/bin/nautilus", "smb://.../")

Alguna información sobre execl

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top