2011-03-07 56 views
8

Estoy ejecutando python en una sesión no interactiva en Windows y, por lo tanto, no puedo asignar una unidad de red.python copia archivos a una ubicación de red en Windows sin asignar una unidad

La mayor parte de lo que he investigado aquí ya través de google todo el mundo sugiere mapear una unidad de red y copiar los archivos de esa manera.

En Linux me gustaría facilitar esto con un smbmount pero desafortunadamente el software con el que estoy trabajando está vinculado a Windows.

¿Hay alguna opción para interactuar con archivos a través de una ruta UNC?

+1

¿ha intentado crear un objeto de archivo con la ruta de acceso unc? es decir, f = abrir ('\\ servidor \ dir \ archivo.nombre'); f.write (cuerdas)? – Ramy

+1

Utilizo rutas UNC todo el tiempo en Python en Windows. Ellos trabajan bien. – kindall

Respuesta

22

Personalmente, nunca he tenido dificultades para que Python simplemente reconozca \\\\<server>\\path\\to\\directory\\. La parte molesta es eso por cada "\" en la victoria. ruta, debe haber 2 en python.

+20

... a menos que uses cadenas sin formato, lo cual deberías. :-) – kindall

+0

o os.sep. más feo pero menos molesto. – Ramy

+2

¿cómo me autentico en ese recurso compartido con las credenciales? – pablo

6

En primer lugar obtener acceso al recurso compartido de red con "NET USE" - sin letra de unidad, como:

winCMD = 'NET USE ' + networkPath + ' /User:' + user + ' ' + password 
subprocess.Popen(winCMD, stdout=subprocess.PIPE, shell=True) 

Como aquí (pero sin especificar letra de unidad): What is the best way to map windows drives using Python?

continuación, copie el archivo/directorio con shutil.copy, como:

import shutil 
shutil.copy2(networkPath + 'sourceDir/sourceFile', 'destDir/destFile') 

como aquí: How do I copy a file in python?

Cuestiones relacionadas