Я пытаюсь вызвать исполняемый файл C из сценария Python. Очевидно, что у моего C-кода есть «# include» в начале, и это то, что дает мне ошибку, когда я вызываю исполняемый файл C из Python. Я использую subprocess.call вызвать исполняемый файл следующим образом:Ошибка Python non-ascii для hashtag
>>> 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 и т.д. все есть «# включить х. Motor_control - это исполняемый файл с числовыми аргументами 50, 1, 50, 1. Я запускал motor_control с терминала, и он работает нормально. Я много googled, но большинство подобных ошибок для других символов, отличных от ascii, и я не нашел ответа, связанного с '\ xdd', который является хэштегом в '#include'. Это означает, что никто не получает ошибку при # include, что означает, что я пропускаю что-то действительно основное. Но я не уверен, что.
Некоторые другие ответы здесь, например: SyntaxError of Non-ASCII character упоминается добавление
# -*- coding: utf-8 -*-
к началу сценария питона, однако это не работает для меня. Добавление
#!/usr/bin/python
также не работал, как упоминалось кем-то еще.
Я запускаю этот код на PCduino (код C выполняется в c_environment для pcduino (помощь для этого here)). Python и C самостоятельно отлично работают на этом оборудовании. Есть ли что-то, что мне нужно сделать по-другому для вызова кода C с #?
Заранее спасибо
Я уже пробовал 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 только потому, что она не давала разрешения, но я понимаю, что вы имеете в виду, и я не попробую это снова. Но есть ли какая-то особая причина, по которой я получаю ошибку разрешения? – Anshul
Вы можете предоставить права доступа к файлу вашего файла? вы можете использовать команду python 'oct (stat.S_IMODE (os.stat (" motor_control "). st_mode))', чтобы заставить его работать, вам нужно импортировать os, stat включить указанную выше команду в сценарий python и попробовать распечатать права доступа к файлам – Ram