learn python the hard way中习题20\n
运行时在cmd中以下这段代码报错:
print_a_line(current_line,current_file)
NameError: name 'current_line' is not defined_
我用查找前后变量名也是一致的。。不知道未定义是什么情况
print("Let's print three lines :")
#读取各行
current_line=1
print_a_line(current_line,current_file)
current_line = current_line + 1
print_a_line(current_line,current_file)
current_line = current_line + 1
print_a_line(current_line,current_file)
以下是完整的代码片段
from sys import argv
script,input_file = argv
#输出文本内容
def print_all(f):
print (f.read())
def rewind(f):
f.seek(0)
def print_a_line(line_count,f):
print (line_count, f.readline())
current_file = open(input_file)
print("First let's print the whole file:\n")
print_all(current_file)
print("Now let's rewind,kind of like a tape")
rewind(current_file)
print("Let's print three lines :")
#读取各行
current_line=1
print_a_line(current_line,current_file)
current_line = current_line + 1
print_a_line(current_line,current_file)
current_line = current_line + 1
print_a_line(current_line,current_file)
你代码的第一行多了一个空格,不知道是不是复制代码时造成的,但是我把空格去掉在我的电脑上运行你的代码是可以正确输出的
我试了一下,没有问题,原来我的测试文件中带了中文,后面加了utf-8的编码后就可以了
from sys import argv
script,input_file = argv
print(script,input_file)
def print_all(f):
print (f.read())
def rewind(f):
f.seek(0)
def print_a_line(line_count,f):
print (line_count, f.readline())
current_file = open(input_file,encoding='utf-8')
print("First let's print the whole file:\n")
print_all(current_file)
print("Now let's rewind,kind of like a tape")
rewind(current_file)
print("Let's print three lines :")
#读取各行
current_line=1
print_a_line(current_line,current_file)
current_line = current_line + 1
print_a_line(current_line,current_file)
current_line = current_line + 1
print_a_line(current_line,current_file)