在Windows中的python,py脚本中的(test.py),调用dos命令的os.system或subprocess.Popen失败,但在命令行下成功(windows-> cmd.exe),脚本如下 附加信息:
C:\Python27\python.exe E:/XtTradeClient/test.py
File "E:/XtTradeClient/test.py", line 5
SyntaxError: Non-ASCII character '\xba' in file E:/XtTradeClient/test.py on line 5,but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Process finished with exit code 1
-------------------------------------------------------------------------------
# encoding='utf-8'
import os
if __name__ == "__main__":
info = '汉字'
cmd = 'echo ' + info
if 0 != os.system(cmd):
raise Exception('failed to call 'echo in command')
-------------------------------------------------------------------------------
答案 0 :(得分:1)
显示的错误来自缺少编码注释。看起来你试图添加一个,但格式错误,因此无法识别。尝试:
# encoding: utf-8
然后下一个问题可能是shell期望的编码。如果您的源代码保存为UTF-8,则其中的(字节)字符串采用UTF-8编码,并以此方式传递给os.system()
。您可能必须重新编码实际将这些字节显示为字符的应用程序。即:首先在终端的编码中从UTF-8解码为unicode
,然后从unicode
解码为str
。通过使用unicode文字可以避免显式解码,至少对于ASCII字符范围之外的字符的(字节)字符串。
# encoding: utf-8
import os
def main():
info = u'汉字'
cmd = 'echo ' + info
if not os.system(cmd.encode('gbk')):
raise Exception('failed to call `echo` command')
if __name__ == '__main__':
main()
答案 1 :(得分:0)
您的编码魔术评论不正确。将其更改为#-*- coding=utf-8 -*-
。
有关详细信息,请参阅pep 0263。