2017-08-07 37 views
0

我是python新手。我試圖創建一個簡單的程序,使用shutil將C盤中的文件夾複製到另一個文件夾。複製時,我想將日期/時間添加到文件夾名稱末尾的新位置。這用於文件備份和清理。這是我到目前爲止,但它無法找到文件路徑。最終,這必須將複製的文件從本地PC保存到網絡驅動器。使用shutil不能找到現有文件路徑的Python新手

import shutil 
import datetime 
import os 

SOURCE = "C:/Program Files(x86) /FOLDER1/LOGS" 
AppendDate=datetime.datetime.now() 
BACKUP = "C:/Users/ME/Desktop/FOLDERNEW/LOGS %s" % AppendDate 

shutil.copytree(SOURCE,BACKUP) 
print os.listdir(BACKUP) 
+0

'print os.listdir(SOURCE)'print? ('/ FOLDER1 ...'' – thebjorn

+1

'前面有一個空格'Program Files(x86)'看起來像一個非常明顯的錯字,因爲它是'Program Files(x86)'開箱即用的(空格*之前*加了括號的部分,而不是之後) –

+0

提供確切的錯誤也是有幫助的,所以我們知道*哪個*路徑沒有被找到 –

回答

0

對不起,因爲我還無法評論。

但是,看起來錯誤可能是從程序文件(x86)行省略的單個空間。

SOURCE = "C:/Program Files (x86)/" 

至於日期,它將不得不被附加在除了命名文件夾之外的窗口格式。

Best practices for file naming

對於這種使用替換替換Appenddate字符。

import re 

cleandate = re.sub('[[email protected]#$:.]', '_', str(AppendDate)) 

這對我有效。

import shutil 
import datetime 
import os 
import re 



SOURCE = "C:/Program Files (x86)/HP" 
AppendDate=datetime.datetime.now() 
cleandate = re.sub('[[email protected]#$:.]', '_', str(AppendDate)) 
BACKUP = "C:/Users/Robert/Desktop/FOLDERNEW/LOGS %s" % cleandate 

shutil.copytree(SOURCE,BACKUP) 
print os.listdir(BACKUP) 
0

歡迎來到Python的世界!請嘗試以下。

import shutil 
import datetime 
import os 

SOURCE = "C:\\Program Files (x86)\\FOLDER1\\LOGS" 
AppendDate=datetime.datetime.now() 
BACKUP = "C:\\Users\ME\\Desktop\\FOLDERNEW\\LOGS %s" % AppendDate 

shutil.copytree(SOURCE,BACKUP) 
print os.listdir(BACKUP) 

Windows使用與Unix,Linux和Mac不同的目錄分隔符。此字符\也具有另一個作爲轉義序列前綴的功能,因此要在Python字符串中生成一個單一的\字符,您需要有兩個\\(即它是\字符本身的轉義序列)或使用「raw」字符串。

另外,正如其他評論家指出的,它看起來像你的路徑在錯誤的地方有一個空間。

+0

The正斜槓分隔符* *在Python for Windows中默默無聞。如果你打算使用b ackslash,我建議一個原始字符串有更多的可讀性倍增:'r'c:\ Program Files文件(x86)\ FOLDER1 \ LOGS'' –