path(Python)中非scii字符的问题

2024-10-01 11:33:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个python程序,它支持移动一些文件。路径中的一个目录的名称包含非ASCII字符:

src=os.path.normpath(u'C:\users\Mårten\python\nonpython')
dest=os.path.normpath(u'C:\users\Mårten\python\target')
files=getspc(src)
for mfile in files:
    print "In the loop"
    oldpath=os.path.normpath(os.path.join(src,mfile))
    print "oldpath: ", oldpath
    newpath=os.path.normpath(os.path.join(dest,mfile))
    print "newpath", newpath
    os.rename(oldpath,newpath)
    with dbcon:    
        cur.execute("INSERT INTO spectra VALUES (?, CURRENT_DATE)",[newpath])

(节选)

这使得程序崩溃,声称没有声明编码。如何声明编码?在


Tags: path程序src声明osfilesusersdest
2条回答
src=os.path.normpath(u'C:\users\Mårten\python\nonpython')

这不是有效的字符串语法。反斜杠在字符串文字中有特殊含义,因此如果要使用字面反斜杠,则需要对其进行转义:

^{pr2}$

(不幸的是,“raw string”r''文本在这里不可用,因为不幸的设计决定是\u在原始unicode字符串中仍然是特殊的。嘘。)

同样,正如@user58697所说,如果您想在源代码中使用非ASCII字符,那么必须在顶部包含一个# encoding: something行。something应该是您告诉您的文本编辑器将文件保存在-I suggest UTF-8中的编码。Unicode不是编码。(除了一些Windows编辑器,它们错误地使用“Unicode”来表示UTF-16LE。您不希望另存为UTF-16,因为它与ASCII不兼容。)

或者,您可以通过使用上述反斜杠转义符来命名非ASCII字符来避免此问题:

src=os.path.normpath(u'C:\\users\\M\u00E5rten\\python\\nonpython')

你需要一个神奇的评论。见PEP 0263

相关问题 更多 >