Нужно запустить скрипт Python, чтобы сделать следующее, что я делаю вручную прямо сейчас для тестирования.
cat /dev/pts/5
И затем мне нужно повторить это обратно в /dev/pts/6
echo <DATA_RECEIVED_FROM_5> > /dev/pts/6
Кажется, я не могу заставить python на самом деле читать то, что приходит из /dev/pts/5, и сохранять его в список, а затем выводить один за другим в /dev/pts/6, используя эхо
#!/bin/python
import sys
import subprocess
seq = []
count = 1
while True:
term = subprocess.call(['cat','/dev/pts/5'])
seq.append(term)
if len(seq) == count:
for i in seq:
subprocess.call(['echo',i,'/dev/pts/6'])
seq = []
count = count + 1
Ну, конечной целью является другая программа, которая печатает что-то каждые несколько секунд в /dev/pts/5, и мне нужно следить за тем, чтобы иметь возможность печатать то же самое, что и в /dev/pts/5. /dev/pts/6, это для проверки концепции, но нам нужно посмотреть, как это будет работать.






Я не уверен, что понимаю вашу проблему и желаемый результат, но чтобы создать список имен файлов в /dev/pts/5 и просто сохранить его как файл .txt в /dev/pts/6, вы должны использовать модуль os, который входит в стандартную комплектацию Python. Вы можете выполнить эту задачу как таковую:
import os
list_of_files = []
for dirpath, dirnames, filenames in os.walk('/dev/pts/5'):
list_of_files.append([dirpath, dirnames, filenames])
with open('/dev/pts/6/output.txt', 'w+') as file:
for file_info in list_of_files:
file.write("{} -> {} -> {}".format(file_info[0], file_info[1], file_info[2]))
Вывод из этого, вероятно, будет немного большим, но вы можете просто применить некоторую логику, чтобы отфильтровать то, что вы ищете.
Считать данные из произвольного файла и записать их в произвольный файл (без расширений) (если я правильно понимаю) довольно легко сделать в python:
with open('/dev/pts/5', 'rb') as file: # use 'rb' to handle arbitrary data formats
data = file.read()
with open(''/dev/pts/6', 'wb+') as file:
# 'wb+' will handle arbitrary data and make file if it doesn't exist.
# if it does exist it will be overwritten!! To append instead use 'ab+'
file.write(data)
Следуя примеру здесь, похоже, вам нужно запустить:
term = subprocess.run(['cat','/dev/pts/5'], capture_output=True)
print(term.stdout)
Где важный бит — capture_output=True, а затем вам нужно получить доступ к .stdout объекта CompletedProcess!
большое спасибо, но я думаю, что, возможно, запутался в том, что я пытаюсь сделать, мне нужно cat /dev/pts/5, это на самом деле файл, а не каталог, поэтому мне нужно cat то, что находится в /dev/ pts/5 и эхо или запись в /dev/pts/6, который является другим файлом
@ Mr39 Итак, у вас есть файл с именем 5 без расширения? И ваша цель — скопировать содержимое этого файла в файл с именем 6 без расширения?
правильно, /dev/pts/5 и 6 - это настоящие последовательные соединения, поэтому у них нет расширений, но нужно постоянно смотреть на файл и, когда что-то приходит к нему, мгновенно копировать его в /dev/pts/6
@Mr39, это больше того, что вы пытаетесь сделать?
еще раз спасибо за обновление, но здесь кроется проблема по какой-то причине, которую я не могу объяснить, почему, когда я пытаюсь открыть файл в python, он не работает, но если я запускаю системную команду, такую как cat, в файл он отлично работает, поэтому я продолжал пытаться запустить внешнюю команду в python и сохранить вывод в переменную, но не смог успешно
Еще раз спасибо, проблема только в том, что Capture_output доступен только для Python 3.7, я использую 3.5.
@Mr39 По моей ссылке New in version 3.5. Не вижу проблемы?
Итак, какова цель вашей программы? Чтобы создать список файлов в
/dev/pts/5и распечатать этот список файлов в/dev/pts/6?