8

试图熟悉 python 的标准库并在我的 Windows 机器上做一些处理。使用python 2.7,我有以下小脚本,旨在查看目录并在从文件名中删除数字后重命名其中的所有文件。我收到一个类型错误,上面写着“必须是没有 NULL 字节的编码字符串,而不是 str”

它调用了第 5 行和第 18 行,如下所述,我在其中使用 os.path.exists。

任何帮助将不胜感激!

    import os, re, string, glob

    path = os.path.normpath('C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest')

ln5:if os.path.exists(path):
        print "path exists at " + path
        for file in glob.glob(os.path.join(path, '*.jpg')):
            new_path = os.path.join(os.path.dirname(file), re.sub('\d', '', os.path.basename(file)))
line18:     if not os.path.exists(new_path):
                os.rename(file, new_path)
4

3 回答 3

12

“...照片\修改\0-PyTest”

它将 \0 作为空字符。您必须使用 转义\\\或者只是r在字符串之前放一个以使其原始:

r'C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest'
于 2013-12-20T20:34:21.300 回答
1

原来是单反斜杠问题。我认为 os.path.normpath 会按照操作系统的要求格式化路径。

于 2012-10-16T15:11:37.250 回答
0

如果您要提供路径 url,只需在其前面添加 r :

(r'E:\Images\1.png')

于 2016-12-21T10:54:46.817 回答