【问题标题】:Python non-ascii error for hashtag主题标签的 Python 非 ascii 错误
【发布时间】:2014-09-19 04:56:49
【问题描述】:

我正在尝试从 Python 脚本调用 C 可执行文件。显然,我的 C 代码在开始时有“#include”,这就是我从 Python 调用 C 可执行文件时出错的原因。我使用 subprocess.call 来调用可执行文件,如下所示:

>>> subprocess.call([sys.executable,"motor_control","50","1","50","1"])

我收到以下错误:

File "motor_control", line 1
SyntaxError: Non-ASCII character '\xdd' in file motor_control on line
2, but no encoding declared; see
http://www.python.org/peps/pep-0263.html for details 1

第 1 行、第 2 行等都有 '#include'。 Motor_control 是可执行文件,它具有数字参数 50、1、50、1。我从终端运行 motor_control,它运行良好。我用谷歌搜索了很多,但大多数类似的错误是针对其他非 ascii 字符的,我没有找到任何与 '\xdd' 相关的答案,这是 '#include' 的主题标签。这意味着没有人在#include 处出错,这意味着我错过了一些非常基本的东西。但我不确定是什么。

这里有一些其他的答案,例如: SyntaxError of Non-ASCII character 提到添加

 # -*- coding: utf-8 -*-

到 python 脚本的开头,但这对我不起作用。添加

#!/usr/bin/python

也没有工作,正如其他人提到的那样。

我在 PCduino 上运行此代码(C 代码在 c_environment 中为 pcduino 执行(对此的帮助是 here))。 Python 和 C 独立地在这个硬件上运行良好。 调用具有 # 的 C 代码时,我需要做些什么不同的事情吗?

提前致谢

【问题讨论】:

    标签: python non-ascii-characters


    【解决方案1】:
    subprocess.call([sys.executable,"motor_control","50","1","50","1"])
    

    上面的命令将转换为/usr/bin/python motor_control 50 1 50 1并被执行

    所以你所做的是将可执行文件传递给 python 解释器这是错误的

    试试这个:

    subprocess.call(["/pathtoexecutable/motor_control","50","1","50","1"]) 
    

    【讨论】:

    • 我已经尝试过 subprocess.call(["/pathtoexecutable/motor_control","50","1","50","1"]) 它说 OSError 13: Permission denied。现在motor_control 的路径是/home/ubuntu/c_environment/output/test/motor_control。我确保 chmod motor_control 使其可执行。我认为这个文件夹也没有任何限制。我使用 sys.executable 命令只是因为它没有给出权限错误,但我明白你的意思,我不会再试了。但是我收到权限错误有什么特别的原因吗?
    • 你能提供你文件的文件权限吗?你可以使用python命令oct(stat.S_IMODE(os.stat("motor_control").st_mode)),要让它工作,你必须导入os,stat在你的python脚本中包含上面的命令并尝试打印文件权限
    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 2015-01-06
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    相关资源
    最近更新 更多