【问题标题】:New to Python using shutil cant find existing filepath使用shutil的Python新手无法找到现有的文件路径
【发布时间】:2017-08-07 19:47:39
【问题描述】:

我是 python 新手。我正在尝试创建一个简单的程序,该程序使用 shutil 将 C 驱动器中的文件夹复制到另一个文件夹。复制后,我想将日期/时间添加到新位置中文件夹名称的末尾。这用于文件备份和清理。这是我到目前为止所得到的,但它找不到文件路径。最终,这必须将复制的文件从本地 PC 保存到网络驱动器。

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)

【问题讨论】:

  • print os.listdir(SOURCE) 打印什么? (你在` /FOLDER1...`前面有一个空格......`
  • Program Files(x86) 看起来像是一个非常明显的错字,因为它是开箱即用的Program Files (x86)(空格之前括号部分,而不是之后)。
  • 提供确切的错误也很有帮助,这样我们就知道找不到哪个路径。
  • 顺便说一句,见the PEP-8 Python style guide——全大写的名字是为常量保留的(CamelCase 是为类名保留的); names_with_underscores 是常规变量的适当形式。
  • 非常感谢您的帮助!我已经复制了文件路径(我在发布时更改了文件/仪器目录的名称,但在我这样做时没有抓住大写字母。不敢相信我错过了空间。

标签: python directory shutil file-copying


【解决方案1】:

对不起,我还不能“评论”。

但是,看起来错误可能是您的程序文件 (x86) 行中省略了一个空格。

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

至于日期,它必须以除命名文件夹外的窗口格式附加。

Best practices for file naming

对于这个使用replace替换Appenddate字符。

import re

cleandate = re.sub('[-!@#$:.]', '_', str(AppendDate))

这对我有用。

import shutil
import datetime
import os
import re



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

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

【讨论】:

    【解决方案2】:

    欢迎来到 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 字符串中生成单个 \ 字符,您需要有两个 \\(即,它是 \ 的转义序列字符本身)或使用“原始”字符串。

    此外,正如其他评论员所指出的,您的路径似乎在错误的地方有一个空格。

    【讨论】:

    • 正斜杠分隔符 在 Python for Windows 上被默认使用。如果您要使用反斜杠,我建议使用原始字符串比加倍具有更高的可读性:r'c:\Program Files (x86)\FOLDER1\LOGS'
    猜你喜欢
    • 1970-01-01
    • 2022-11-27
    • 2018-06-16
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2021-10-01
    • 2020-08-02
    相关资源
    最近更新 更多