Первоначально у меня была программа, которая запрашивала у пользователя имя файла с raw_input
, открывала и читала файл и выполняла несколько действий с отпечатками.Почему файл командной строки не получает строки?
Теперь я заинтересован в получении имя файла из аргументов командной строки, как это: C:\Users\MyName\pythonfile.py somenumbers.txt
При попытке выполнить с тем, что вы видите выше ^, файл somenumbers.txt печатается, но никаких дальнейших действий не происходит на нем, начиная с линии: for line in file:
.
Я сфокусирован на том, почему я мог выполнять дальнейшие действия до того, как пользователю будет предложено ввести `raw_input '.
Вот код с raw_input
, который у меня был до того, где я мог распечатать весь файл (если бы захотел) и выполнить все действия после for line in file:
.
import sys
#Query the user for a file name
filename = raw_input("Please enter a file name: ")
integer_list = []
#Open and read the file selected by the user
#Error checking for file
#try:
with open(filename, 'r') as file:
#try:
for line in file:
if line.strip() and not line.startswith("#"):
integer_list.append(line)
myset = set(line.split())
myset_count = len(myset)
integer_list = line.split(' ')
result = sum([int(integer_list[i]) != int(integer_list[i+1]) for i in range(len(integer_list)-1)]) + 1
mylist = list(line.split())
integer_list = line.split(' ')
#finally:
#file.close() #Close the file
Теперь, вот код, который получает имя файла из командной строки (с помощью командной строки форматирования вы видите выше):
import sys
print 'here'
print 'here1'
integer_list = []
print 'here2'
print 'here3'
with open(sys.argv[1], 'r') as file:
print(file.read())
for line in file:
print 'here4'
if line.strip() and not line.startswith("#"):
integer_list.append(line)
print 'here5'
myset = set(line.split())
myset_count = len(myset)
print 'here6'
integer_list = line.split(' ')
result = sum([int(integer_list[i]) != int(integer_list[i+1]) for i in range(len(integer_list)-1)]) + 1
mylist = list(line.split())
integer_list = line.split(' ')
теперь я могу ввести следующее с кодом с участием команды линия agruments:
here
here1
here2
here3
This is the file data
This is more of the file
Я озадачен, почему остальная часть кода после for line in file:
не будет выполняться в настоящее время.
Любые предложения? Спасибо.
Я не думаю, что вы можете иметь 'try' без' except' или 'finally'. У вас есть два 'try', no 'except' и only 'finally' – wpercy
Также вам не нужно закрывать файл в блоке 'finally', потому что вы используете диспетчер контекстов. – wpercy