2017-08-07 36 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'' –