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

rak*_*tin 8 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)
Run Code Online (Sandbox Code Playgroud)

小智 10

"......照片\修改\ 0 PyTest"

它将\ 0作为空字符.你必须逃避\使用\\,或者只是r在字符串之前放一个以使其成为原始:

r'C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest'
Run Code Online (Sandbox Code Playgroud)


rak*_*tin 1

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