我有一个简单的程序:
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可以读取它吗?
答案 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