Конкатенация строки с результатом ввода () - PullRequest
0 голосов
/ 02 мая 2011

Я хочу сделать что-то подобное в командной строке:

Enter input filename: filename

Когда пользователь указывает имя файла, это должно произойти

lines = [line.strip() for line in open('filename.txt')]

Я пытался использовать

lines = [line.strip() for line in open('input().txt')]

Но он просто ищет файл с именем 'input (). Txt'

Как я могу сделать эту работу?

Спасибо

Ответы [ 3 ]

4 голосов
/ 02 мая 2011

Вам нужно, чтобы input() находился вне кавычек, а затем объедините его с '.txt' с помощью оператора +.Кроме того, это повысило бы ясность вашего кода, чтобы получить имя файла, открыть файл и прочитать файл в отдельных строках.

filename = input()
with open(filename + '.txt', 'r') as f:
    lines = [line.strip() for line in f]

Кроме того, если вы не используете Python 3, вы, вероятно, имеете в видуraw_input вместо input.

2 голосов
/ 02 мая 2011

Попробуйте отформатировать строку:

open('{0}.txt'.format(input(), 'r'))

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

1 голос
/ 02 мая 2011

Попробуйте это:

lines = [ line.strip() for line in open(raw_input("Enter input filename: ")) ]
...