Чтение текстового файла с использованием sys.stdin - PullRequest
0 голосов
/ 03 марта 2019

У меня есть простая программа:

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

Она продолжает висеть на мне.Я использую стандартный ввод, потому что так требуется ввод данных.Это правильный способ передать текстовый файл, чтобы он мог быть прочитан с помощью стандартного ввода?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

| означает направлять выходные данные предыдущей программы в качестве входных данных для последующей программы, а не предоставлять входные данные из файла, который следует за предшествующей программе.

Вы должны использовать < вместо |:

python TitleCountMapper.py stopwords.txt delimiters.txt < input.txt
0 голосов
/ 03 марта 2019

Трубы работают наоборот:

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

Или даже лучше, используйте < для перенаправления ввода / вывода:

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