2017-02-10 131 views
-1

我有一個帶有兩列的表,其中包含目錄和/或文件的鏈接以及NULL 每個記錄都有一個「NAME」列作爲新目錄的名稱 類似於這Python:將文件從一個目錄複製到另一個讀取圖層列

... NAME HOTLINK1     HOTLINK2 
... name1 C:\...\directory1   C:\...\directory6\file 
... name2 C:\...\directory2   NULL 
... name3 C:\...\directory5\file C:\...\directory 
... name4 NULL      NULL 

我試圖寫代碼複製目錄中的全部內容(包含子目錄),並從HOTLINK1和HOTLINK2文件到新目錄「NAME」。

所以:

  • 如果HOTLINK是一個目錄>>>複製目錄中的全部內容(包含子目錄)

  • 如果盜鏈是一個文件>>>複製該文件

  • 如果是NULL >>通過。

+0

請嘗試對這個問題的工作要求我們寫代碼,而不是爲你。 –

+0

對不起,你是對的。我改變了請求的類型。隨着最後一個答案,我正在寫一些代碼。 –

回答

0

你已經有了一個非常清晰的人類語言方法,也許只需要一些提示就可以在Python代碼中編寫它們。

  1. 如何讀取每行和鏈接列,通過換行符解析字符串和按空格拆分應該工作。
  2. 如何判斷路徑是文件還是目錄(或至少存在)?嘗試os.path模塊。
  3. 如何複製文件或文件夾?嘗試shutil模塊。
  4. 注意Windows系統的文件路徑中的反斜線,它需要被轉義。
+0

人類的語言很清楚,但我是Pyhton初學者:-)。我嘗試使用邏輯推理 。 –

0
import os 
print(os.path.isdir("/home/el")) 

結果真或假

print(os.path.exists("/home/el/myfile.txt")) 

結果真或假

import shutil 
shutil.copytree('hotlink1', 'hotlink2') 
0

承蒙@Dev Jalla的建議,並@Neo X我寫這篇文章的代碼工作。 它使用了一列HOTLINK1的值。現在我不知道添加代碼,以產生具有HOTLINK2值同樣的事情,而文件夾的卡勒「NAME」已存在:

import shutil 
    import csv 
    import os 

    source='D:\\Prova_copy_pyhton\\' 
    with open('D:\\Prova_copy_pyhton\\list.csv') as csvfile: 
      reader = csv.DictReader(csvfile, delimiter=';') 
      for row in reader: 

       a = row['hotlink1'] 
       fa= os.path.basename(a) 
       out = row['name'] 

       if os.path.isdir(a): 
       shutil.copytree(a, os.path.join(source, out)) 

       elif os.path.exists(a): 
        try: 
         os.stat(os.path.join(source, out)) 
        except: 
         os.mkdir(os.path.join(source, out)) 
         shutil.copy(a, source+out+'\\'+fa) 
相關問題