Я использую Python2.7, а моя операционная система — Ubuntu14.04.
В моем коде Python я использую fifo = os.open('fifo', os.O_NONBLOCK | os.O_RDONLY)
для открытия именованного канала. Затем я использую string = fifo.read(7)
для чтения семи символов из этой трубы. Перед запуском кода я создаю канал в командной строке с помощью mkfifo fifo
. Когда я пытаюсь запустить код, я получаю следующую ошибку:
Traceback (most recent call last):
File "test.py", line 19, in <module>
string = fifo.read(7)
AttributeError: 'int' object has no attribute 'read'
Почему это происходит и как я могу это исправить?
Дополнительная информация, если необходимо:
Я использую fifo для передачи вывода файла программирования набора ответов (ASP) в строку в моем коде Python. Выходные данные файла python передаются на вход файла ASP (работающего в режиме запроса). Итак, python отправляет запрос в ASP, ответ помещается в канал fifo, python читает этот ответ в строку.
Причина, по которой я использую O_NONBLOCK, заключается в том, что без него выполнение останавливалось, хотя я не знаю почему, поскольку я почти уверен, что файл ASP записывался в FIFO; Я протестировал аналогичный метод, используя текстовый файл вместо FIFO, и вывод ASP определенно попадал в текстовый файл.
Я запускаю свой код с помощью команды python pythonfile.py | java -jar sparc.jar aspfile.sp > fifo
.
Пожалуйста, сообщите мне в комментарии, если вам нужна дополнительная информация, и я опубликую свой код. Спасибо за любой совет, который вы можете дать.