2017-01-10 2 views
0

Я хочу передать данные в файл Python, используя трубу, а также указать входной файл, как:Передача конвейеру данных в программу Python, а также входной файл

cat file.txt|python script.py -u configuration.txt 

настоящее время у меня это:

for line in fileinput.input(mode='rU'): 
    print(line) 

Я знаю, что может быть что-то с sys.argv, но, возможно, с помощью fileinput есть чистый способ сделать это?

Спасибо.

ответ

1

От the documentation:

Если имя файла '-', он также заменяется sys.stdin. Чтобы указать альтернативный список имен файлов, передайте его в качестве первого аргумента в input().

Таким образом, вы можете создать список, содержащий '-', а также содержимое sys.argv[1:] (по умолчанию), и передать в input(). Или же просто поставить - в списке аргументов вашей программы Python:

cat file.txt|python script.py -u - configuration.txt 

или

cat file.txt|python script.py -u configuration.txt - 

в зависимости от того, хотите ли вы данные, представленные на стандартном вводе должны быть обработаны до или после того, как содержание configuration.txt ,

Если вы хотите сделать что-либо более сложное, чем просто обрабатывать содержимое стандартного ввода, как если бы это был входной файл, вероятно, вам не следует использовать модуль fileinput.

+0

Спасибо! Оттуда я могу работать! – mclzc

Смежные вопросы