【发布时间】:2017-11-13 03:06:27
【问题描述】:
我正在尝试打印文件中的行数,当我在函数之外使用代码时,它可以正常工作:
input_file_name = input("Please Enter the name of your text file: ")
infile = open(input_file_name, "r")
listOfLines = infile.readlines()
count = 0
char = " "
for line in listOfLines :
text = line.rstrip()
while char != "":
char = infile.read(1)
count = count + 1
print(count)
infile.close()
但是当我在函数内部使用相同的代码时,它会打印一个值 0 而不是 5(这是我的测试文件的长度)。
def main():
input_file_name = input("Please Enter the name of your text file: ")
infile = open(input_file_name, "r")
print()
print_file(infile)
count_lines(infile)
infile.close()
def print_file(infile):
listOfLines = infile.readlines()
for line in listOfLines:
text = line.rstrip()
print(text)
def count_lines(infile):
listOfLines = infile.readlines()
count = 0
char = " "
for line in listOfLines :
text = line.rstrip()
while char != "":
char = infile.read(1)
count = count + 1
print(count)
main()
但是,如果我删除该功能
def print_file(infile):
listOfLines = infile.readlines()
for line in listOfLines:
text = line.rstrip()
print(text)
以及对函数的调用,
print_file(infile)
它工作正常。为什么第一个函数会影响第二个函数的打印方式?
【问题讨论】:
-
因为
print_file使用了文件,而您没有将流重新设置到开头。 -
因为第一个函数将文件留在 EOF。所以下一个函数没有什么可读取的。尝试在 count_lines() 方法的开头添加
infile.seek(0)以将文件重置为其开头。
标签: python function for-loop import