2014-07-24 85 views
3

我正在使用以下腳本從標準輸入中使用numpy讀取文件。使用numpy.genfromtxt讀取單行CSV

#!/usr/bin/env python 
import numpy as np 
import sys 

data = np.genfromtxt(sys.stdin, delimiter=",") 
print data.shape 
print data 

這對超過1行的文件正常工作。但沒有此文件的工作:

1,2,2,2,2,2,1,1,1 

我運行像這樣

$ cat input-file.txt | ./test.py 

輸出如下:

(9,) 
[ 1. 2. 2. 2. 2. 2. 1. 1. 1.] 

它應該有形狀(9)。有誰知道如何修理它?

+0

可能重複[numpy loadtxt單行/行列表](http://stackoverflow.com/questions/13528053/numpy-loadtxt-single-line-row-as-list) – Thiru

回答

4

力成一個二維數組:

data = np.genfromtxt(sys.stdin, delimiter=",") 
if len(data.shape) == 1: 
    data = np.array([data]) 
0

您可以使用CSV這在所有情況下工作:

import csv 

reader=csv.reader(sys.stdin) 
for row in reader: 
    print row 

測試從擊:中

$ printf '1,2,3,4' | ./test.py 
['1', '2', '3', '4'] 
$ printf '1,2,3,4\n5,6,7,8' | ./test.py 
['1', '2', '3', '4'] 
['5', '6', '7', '8']