使用sys.stdin读取文本文件

时间:2019-03-03 00:37:52

标签: python stdin python-2.x

我有一个简单的程序:

import sys
import string

stopWordsPath = sys.argv[1]
delimitersPath = sys.argv[2]
stopWordsList = []
delimiterList = []

with open(stopWordsPath) as f:
    for line in f:
        line = line.strip()
        stopWordsList.append(line)

with open(delimitersPath) as f:
delimiterList = f.read().strip()

for line in sys.stdin:
    print line

当我尝试在linux中执行以下操作时:

python TitleCountMapper.py stopwords.txt delimiters.txt | input.txt

它一直挂在我身上。我正在使用stdin,因为这是需要输入的方式。这是传递txt文件的正确方法,以便stdin可以读取它吗?

2 个答案:

答案 0 :(得分:2)

|的意思是将前一个程序的输出作为输入定向到后继程序,而不是从后继文件向前一程序提供输入。

您应该使用<而不是|

python TitleCountMapper.py stopwords.txt delimiters.txt < input.txt

答案 1 :(得分:1)

管道以相反的方式工作:

cat input.txt | python TitleCountMapper.py stopwords.txt delimiters.txt

或更妙的是,使用<进行I / O重定向:

python TitleCountMapper.py stopwords.txt delimiters.txt <input.txt