2017-06-02 87 views
-1

爲什麼我無法從遠程計算機複製的任何想法? 第一個片段有效,我可以複製到'servername'。 第二個片段給了我一個'沒有這樣的文件或目錄'。錯誤,當我想從'服務器名'複製到我的本地計算機。我可以複製到遠程計算機,但不能從使用Python複製

更新2

這也不行......

def copyfrom(): 

    source_path = "\\computername\c$\test" 
    dest_path= "C:\localtest" 
    file_name = "testfile.txt" 

    shutil.copyfile(os.path.join(source_path, file_name), os.path.join(dest_path, file_name)) 

UPDATE我讀你不能使用shutil從遠程計算機複製。任何人對我的選擇有什麼想法?

我一直在複製到使用該計算機的列表...

import os 
import shutil 
import fileinput 
import re 
import sys # some of these use for other code in my program 

source = os.listdir("C:/Users/jm/Desktop/PythonUpdate/") 
destination = '//' + servername + r'/c$/test/' 
for files in source: 
    if files.endswith("myname.config"): 
     try: 
      os.makedirs(destination, exist_ok=True) 
      shutil.copy(files,destination) 
     except: 
      copyerror() 


os.system('cls' if os.name == 'nt' else 'clear') 
array = [] 
with open("C:/Users/jm/Desktop/PythonUpdate/serverlist.txt", "r") as f: 
    for servername in f: 
    copyfiles(servername.strip()) 

爲什麼不工作的對立面? 這裏就是我想:

def copyfrom(servername): 
    # copy config from server 


    source = os.listdir('//' + servername + r'/c$/test') # directory where original configs are located 
    destination = 'C:/Users/jm/Desktop/PythonUpdate/' # destination server directory 
    for files in source: 
     if files.endswith("myname.config"): 
      try: 
       os.makedirs(destination, exist_ok=True) 
       shutil.copy(files,destination) 
      except: 
       copyerror() 
    readconfig(servername) 


# begin here 
os.system('cls' if os.name == 'nt' else 'clear') 
array = [] 
with open("C:/Users/jm/Desktop/PythonUpdate/serverlist.txt", "r") as f: 
    for servername in f: 

     copyfrom(servername.strip()) 
+0

我認爲你的代碼是A)沒有正確縮進,B)缺少某些東西(至少在第一個片段中)。請修復。 –

+1

你是什麼意思不工作?你有錯誤嗎?什麼是錯誤? 也 - 爲什麼你有2個功能幾乎相同,你可以編寫一個函數,需要不同的參數,如目的地和來源,這樣你可以肯定他們真的是一樣的 –

+0

第一個片段的工作對不起,我是沒有得到一個凹痕錯誤。我收到一個錯誤,指出「沒有這樣的文件或目錄」,並且在進一步閱讀之後,它看起來像不能使用shutil來遠程複製文件。您只能複製到遠程計算機。 – Prox

回答

-1

你不運行從一個目錄腳本調用C:/用戶/ JM /桌面/ PythonUpdate /任何機會?

os.listdir將爲您提供指定路徑中目錄中條目的名稱,而不是包含路徑的完整網絡名稱。 https://docs.python.org/2/library/os.html

修改的示例使用反斜槓代替正斜槓。如果你想這樣做,使用原始字符串更容易。

def copyfrom(): 

    source_path = r"\\computername\c$\test" 
    dest_path= r"C:\localtest" 
    file_name = "testfile.txt" 

    shutil.copyfile(os.path.join(source_path, file_name), os.path.join(dest_path, file_name) 

說,真的沒有理由在路徑名中使用反斜槓。除非你在沒有網絡共享支持的Windows PC上運行,否則正斜槓將被視爲與反斜槓相同。

+0

嗯我在我最新的更新示例中使用了正斜槓,它的工作原理 – Prox

相關問題