2014-09-18 71 views
0

我想從Python腳本調用C可執行文件。很顯然,我的C代碼在開始時有'#include',這就是當我從Python調用C可執行文件時給我的錯誤。我用subprocess.call調用可執行如下:hashtag的Python非ascii錯誤

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

我也得到了以下錯誤: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 

線,2號線等所有有「#包括的。 Motor_control是可執行文件,它有數字參數50,1,50,1。我從終端運行motor_control並運行良好。我google了很多,但大多數類似的錯誤是其他非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代碼#?

在此先感謝

回答

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

上面的命令將轉化爲/usr/bin/python motor_control 50 1 50 1和執行

所以你做的是什麼,經過excutable到Python解釋這是不對的

試試這個:

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

我已經試過 subprocess.call([「/ pathtoexecutable/motor_control」,「50」,「1」,「50」,「1」]) 它說OSError 13:權限被拒絕。現在motor_control的路徑是/ home/ubuntu/c_environment/output/test/motor_control。我確保chmod motor_control使其可執行。我不認爲這個文件夾也有任何限制。 我使用sys.executable命令只是因爲它沒有給出權限錯誤,但我明白你的意思,我不會再嘗試。 但是,有什麼特別的原因,爲什麼我得到權限錯誤? – Anshul 2014-09-18 21:18:43

+0

你能提供你的文件的文件權限嗎?您可以使用python命令'oct(stat.S_IMODE(os.stat(「motor_control」)。st_mode))',使其工作,您必須導入os,stat在您的python腳本中包含上述命令並嘗試打印文件權限 – Ram 2014-09-19 07:22:54