2015-09-29 8 views
4

Я хочу дать строку, хранящуюся в txt-файле, в качестве аргумента для кода python с помощью команды sys.argv. Это код называется script.pyвходная строка в bi python через sys.argv

import sys 
seq = sys.argv[1] 
print seq 

и это строка хранится в seq.txt: AAABBBCC

Теперь, когда я бегу

python script.py seq.txt 

Я получаю

seq.txt 

как мощность. Как я могу получить его для печати строки в файле seq.txt.

ответ

4
with open(argv[1]) as f: 
    print(f.readlines()) 

Вам нужно открыть файл, как это, прежде чем вы можете прочитать и распечатать его.

+1

Смотрите также [РЕР-0278] (https://www.python.org/dev/peps/pep-0278/) для использования ' 'rU'' в качестве альтернативы только для'' r'' как параметр в 'open()'. Это более общее. – colidyre

1

Вам необходимо открыть файл, чтобы прочитать его содержимое.

Когда вы сделаете это:

seq = sys.argv[1]

Вы просто получаете строковое значение того, что вы предоставляете свои аргументы сценария.

То, что вы хотите сделать, это принять seq и получить содержимое файла, делая что-то вроде этого:

fi = "" 
with open(seq) as f: 
    fi = f.readlines() 

Вы, вероятно, нужно сделать еще кое-что после этого, но я оставлю это тебе. :)

Читайте на Python файлы здесь: Python Files

1

Что делать, если вы сначала прочитали файл в переменной, а затем передали его на python?

$ my_var=$(<text_file.txt) 
$ python python_file.py "$my_var" 
+0

Это на самом деле больше похоже на то, о чем спрашивал OP, чтобы подумать об этом. @Ssank - это то, что вы искали? – idjaw