使用 sys.stdin 读取文本文件

Reading text file using sys.stdin

我有一个简单的程序:

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

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

管道以相反的方式工作:

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

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

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

|表示将前一个程序的输出作为后一个程序的输入,而不是将后一个文件的输入提供给前一个程序。

你应该使用 < 而不是 |:

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