2015-04-23 3 views
0

Я пытаюсь читать аргументы с пробелами в окнах cmd.Прочитать аргумент с пробелами из окон cmd Python

Так вот код.

from avl_tree import * 
import sys,os 

if __name__ == '__main__': 
    avl = AVLTreeMap() 
    infile = sys.argv[1] + '.txt' 
    avl._preprocessing(infile) 
    avl._interface(infile) 

Я написал это как sys.argv [1], так как я буду тип в ЦМД следующим образом:

python filename.py textfilename 

Но тогда, если текстовый файл имеет пробелы в имени его не будет работать так. Любые предложения?

Заранее спасибо.

+2

Put Textfile имя в кавычках – sshashank124

+1

'питон "filename.py" "argument2"«аргумент 3 "...' – sshashank124

+0

Я вижу. Это, безусловно, работает. Но есть ли способ изменить код, чтобы он работал? – zakels

ответ

0

Это очень Hacky исправить, и я бы не обязательно предполагают, что это потому, что он будет связываться с другими аргументами, возможно, потребуется добавить позже, но вы могли бы сделать что-то вроде этого:

infile = " ".join(sys.argv[1:]) + '.txt' 

Так вы, если вы запустите программу так:

python filename.py my file name 

входной_файл будет равен "my file name.txt"

+0

Хорошо, так что это похоже на то, что все аргументы будут считаться «infile» после .py. Я прав? – zakels

+0

@zakels Исправить. Если вы хотите добавить дополнительные аргументы, сделайте их 'argv [1]' и измените мой код на 'argv [2:]'. – Loocid

+0

Это не сработает, если имя файла содержит последовательные пробелы или ведущие или завершающие пробелы. – chepner

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