python TypeError:必须是没有NULL字节的编码字符串,而不是str

时间:2012-09-25 21:48:25

标签: windows scripting python-2.7

尝试熟悉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)

3 个答案:

答案 0 :(得分:10)

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

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

r'C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest'

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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