我無法理解如何使用subprocess
解決我的問題。如何使用子進程和'cat'逐行讀入數據?
假設我在我的子目錄中有一個製表符分隔的文本文件tabdelimited1.txt
,我想讀入熊貓數據框。
當然,你可以簡單地導入數據如下:
import pandas as pd
df = pd.read_csv("tabdelimited1.txt", header=None, sep="\s+")
然而,假設我們想用subprocess
。在命令行中,$cat tabdelimited1.txt
將輸出所有行。
現在,我想使用子進程讀取cat tabdelimited1.txt
的輸出。如何做到這一點?
我們可以使用
import subprocess
task = subprocess.Popen("cat file.txt", shell=True, stdout=subprocess.PIPE)
data = task.stdout.read()
,但(1)我得到shell=True
和(2)我想在數據線,由線到讀取錯誤。
如何使用subprocess
逐行讀取tabdelimited1.txt
?這個腳本應該是這個樣子:
import subprocess
import pandas as pd
df = pd.DataFrame()
task = subprocess.Popen("cat file.txt", shell=True, stdout=subprocess.PIPE)
# while lines exist:
# line = subprocess std
df=pd.concat([df, line])
EDITED
你用'shell = True'得到了什麼錯誤? – tdelaney
子進程模塊與從管道輸入讀取無關,你只需要[從sys.stdin讀取](http://stackoverflow.com/questions/17658512/how-to-pipe-input-to-python -linux-program-in-line-from-line-from-linux-program)for cat x.txt | python script1.py'。 – TessellatingHeckler
@TessellatingHeckler但是OP想要使用'subprocess'。 – tdelaney