2011-03-07 74 views
8

我在Windows的非交互式會話中運行python,因此我無法映射網絡驅動器。python將文件複製到Windows上的網絡位置,無需映射驅動器

我在這裏和通過谷歌大家研究的大部分建議映射網絡驅動器和複製文件的方式。

在Linux上,我會用smbmount來實現這一點,但不幸的是,我正在使用的軟件與windows綁定。

是否有任何選項可以通過UNC路徑與文件進行交互?

+1

您是否嘗試過使用unc路徑創建文件對象?即f = open('\\ server \ dir \ file.name'); f.write(字符串)? – Ramy 2011-03-07 20:00:59

+1

我在Windows上始終使用Python中的UNC路徑。他們工作正常。 – kindall 2011-03-07 20:23:31

回答

22

就我個人而言,我從來沒有讓Python簡單識別\\\\<server>\\path\\to\\directory\\。令人討厭的部分是對於勝利中的每個「\」。路徑,Python中需要有2個。

+20

...除非你使用原始字符串,你應該。 :-) – kindall 2011-03-07 20:23:03

+0

或os.sep。更醜陋,但麻煩更少。 – Ramy 2011-03-07 20:31:44

+2

我如何使用憑證對該份額進行身份驗證? – pablo 2011-03-09 14:25:50

6

首先獲得訪問網絡共享與 「NET USE」 - 無需驅動器號,如:

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

正如在這裏(但不指定驅動器盤符): What is the best way to map windows drives using Python?

然後複製文件/與shutil.copy目錄,如:

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

正如在這裏: How do I copy a file in python?

相關問題