2017-02-09 16 views
0

Я новичок в использовании труб и ввода-вывода в python, и я использовал sys.stdin.readlines() из файла.Трубы и аргументы в python

Как вы читаете дополнительный аргумент? Например:

more input.txt | python program.py 200 

Я хочу сохранить, что «200» в качестве переменной (межд) в моей программе использовать.

Моя попытка:

number = int(sys.argv[1]) 

Для целей тестирования я просто напечатал

print number 

, но я не получил '200'.


Лучшее объяснение:

У меня есть два файла, 'test.txt' и 'test.py'

test.py

#!/usr/bin/python 
import sys 
line = "" 
for n in [line for line in sys.stdin.readlines()]: 
    print n 

При запуске

$ more test.txt | python test.py 

распечатать

asdfsdf 200 

sldkfjs 100 

kljslkd 300 

Моя цель состоит в том, чтобы просто распечатать строку с номером я прохожу в качестве аргумента

Моя попытка:

test.py

#!/usr/bin/python 
import sys 
number = int(sys.argv[1]) 
line = "" 
for n in [line for line in sys.stdin.readlines()]: 
    if n.split()[1] == number: 
     print n 

n.split() [1] должно быть число из каждой строки в файле правильно? При запуске

$ more test.txt | python test.py 200 

То, что я хочу вернуться в:

asdfsdf 200 

Но вместо того, чтобы это пустое ...

+0

Looks и работает для меня. Я не уверен, в чем проблема. –

+0

@ Scott Carpenter извините за это, я обновил вопрос лучшим примером –

ответ

0

Я не мог воспроизвести вашу проблему.

Это мой файл:

#!/usr/bin/env python 

import sys 

number = int(sys.argv[1]) 
print number 

запускаемый из командной строки с more input.txt | python program.py 200 и выходом 200.

Вы можете попробовать print str(sys.argv) исследовать то, что находится в sys.argv

+0

извините, я создал тестовую ситуацию и обновил ее в своем вопросе. –

+0

nvm, я понял, спасибо за последний отзыв –