gpt4 book ai didi

python - 代码在函数外部工作,但在函数内部不起作用(python)

转载 作者:行者123 更新时间:2023-12-01 02:27:14 25 4
gpt4 key购买 nike

我正在尝试打印文件中的行数,当我在函数外部使用代码时,它工作正常:

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)

效果很好。为什么第一个函数会影响第二个函数的打印方式?

最佳答案

使用infile = open(input_file_name, "r") 创建的文件对象是一个迭代器。它只能循环播放一次。

您的 print_file 函数对文件执行第一次迭代,耗尽其内容。当您尝试在 count_lines 中进行第二次迭代时,迭代器已结束,因此不会发生任何其他情况。

关于python - 代码在函数外部工作,但在函数内部不起作用(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47256532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com