我正在写一个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])
(节选)
这使得程序崩溃,声称没有声明编码。如何声明编码?在
这不是有效的字符串语法。反斜杠在字符串文字中有特殊含义,因此如果要使用字面反斜杠,则需要对其进行转义:
^{pr2}$(不幸的是,“raw string”
r''
文本在这里不可用,因为不幸的设计决定是\u
在原始unicode字符串中仍然是特殊的。嘘。)同样,正如@user58697所说,如果您想在源代码中使用非ASCII字符,那么必须在顶部包含一个
# encoding: something
行。something
应该是您告诉您的文本编辑器将文件保存在-I suggest UTF-8中的编码。Unicode不是编码。(除了一些Windows编辑器,它们错误地使用“Unicode”来表示UTF-16LE。您不希望另存为UTF-16,因为它与ASCII不兼容。)或者,您可以通过使用上述反斜杠转义符来命名非ASCII字符来避免此问题:
你需要一个神奇的评论。见PEP 0263
相关问题 更多 >
编程相关推荐