2015-09-18 3 views
0

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

Traceback (most recent call last): 
    File "execute.py", line 1, in <module> 
    program=open(programfilename, "r") 
NameError: name 'programfilename' is not defined 

Мой код до этого program=open(programfilename, "r"). Я не уверен, что не так. Это первая строка в моей программе. Execute.py - это имя моего кода.

+0

Где именно он должен получать 'programfilename' от? –

ответ

0

Вам необходимо установить переменную programfilename в имя/путь файла в предыдущей строке. Кроме того, вы можете поместить имя файла в кавычки.

0

Это первая строка в моей программе

Ну есть ваша проблема. Вы используете programfilename, не указав его первым.

Try что-то вроде

import sys 
programfilename = sys.argv[0] # argument you passed into your program. 
program=open(programfilename, "r") 
+0

О, это имеет смысл. Огромное спасибо. –

0

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

import sys 
with open(sys.argv[1], 'r') as f: 
    print(f.read()) 

Run, как этот

python3 execute.py programfilename 

Если вы хотите, чтобы ваша программа, чтобы напечатать на консоли, код может

import sys 
with open(sys.argv[0], 'r') as f: 
    print(f.read()) 

Это напечатает код на консоли.

Run как этот

python3 execute.py 
Смежные вопросы