我原本有一个程序,提示用户输入文件名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's,没有'except's,只有一个'finally' – wpercy
你也不需要关闭'finally'块中的文件,因为你正在使用上下文管理器。 – wpercy