使用 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
我有一个简单的程序:
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