Как сохранить линии Popen.communicate вместе?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сохранить линии Popen.communicate вместе?

Сообщение Anonymous »

Я хочу записать STDOUT подпроцесса.Popen.communicate в pd.DataFrame. Я взял несколько потоков SO и объединил их в этот код:

Код: Выделить всё

import subprocess
import io
import pandas as pd

strings = ['Hello\tWorld!', 'This\tis', 'a\tTest!']

string = '\n'.join(strings)

cmd_grep = ['grep', 's']

process_grep = subprocess.Popen(cmd_grep, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
grep_stdout = process_grep.communicate(input=string.encode('utf-8'))[0].decode('utf-8')
grep_csv = io.StringIO()

for line in grep_stdout:
grep_csv.write(line)

grep_csv.seek(0)
grep_results = pd.read_csv(grep_csv,
sep='\t',
header=None,
names=['Word1', 'Word2'])
grep_csv.close()

grep_results
Это работает для облегчения вывода. Но если я хочу отфильтровать строки, вот так

Код: Выделить всё

    if line.startswith('This'):
grep_csv.write(line)
это больше не работает. Это связано с тем, что моя строка for в grep_stdout: перебирает не строки, а символы (вы можете увидеть это, добавив print(line)). Есть идеи, как мне объединить строки?

Подробнее здесь: https://stackoverflow.com/questions/791 ... e-together
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»