SyntaxError: не-ASCII символ '\ xff' при запуске C, исполняемого с использованием подпроцесса - PullRequest
0 голосов
/ 14 апреля 2020

Мне нужно запустить программу и использовать вывод ее консоли в сценарии python с помощью модуля подпроцесса. Вот мой код:

#!/usr/bin/python
# coding=utf-8

from __future__ import unicode_literals
import sys
from subprocess import Popen, PIPE, STDOUT


# Check the code by running linux list command
p = Popen(["ls", "-l"], stdout=PIPE, bufsize=1)

with p.stdout:
    for line in iter(p.stdout.readline, b''):
        print line
p.wait() # wait for the subprocess to exit

# Run the C hello world program
p = Popen([sys.executable, "hello_C"], stdout=PIPE, bufsize=1)

with p.stdout:
    for line in iter(p.stdout.readline, b''):
        print line
p.wait() # wait for the subprocess to exite

Вывод "ls -l" отображается в консоли Python без проблем. Я предполагаю, что код, связанный с подпроцессом и чтением стандартного вывода является правильным. Но когда я пытаюсь запустить программу hello_ C, которая является просто программой hello world, она выдает следующую ошибку:

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

1 Ответ

0 голосов
/ 14 апреля 2020

sys.executable - интерпретатор Python. Sys hello_C - это скомпилированная C программа, а не Python скрипт, вы не должны использовать ее для запуска программы. Просто запустите программу напрямую.

p = Popen(["./hello_C"], stdout=PIPE, bufsize=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...