python - Python - 为什么我的 for 循环跳过行并且没有到达文件末尾?
问题描述
我正在编写一个简单的函数,它获取文本文件的路径并返回该文件中包含的行数。
我确保使用 file.seek(0) 将文件指针设置为开头。
def get_number_lines(file_dir):
exists = os.path.isfile(file_dir)
if (exists):
print(file_dir)
line_count = 0
read_file = open(file_dir,'r')
read_file.seek(0)
for line_num, line in enumerate(read_file.readlines()):
line_count = line_num
print(line)
read_file.close()
return (line_count + 1)
else:
print("ERROR: FILE \"" + file_dir + "\" does not exist.")
exit()
奇怪的是,当我尝试调用该函数时,它运行正常,但输出告诉我我的文件比实际短 3 行。当我打印文件行时,它似乎跳过了文件的最后 3 行,我不知道为什么。
解决方案
我已经使用“with open”而不是 read_file.seek 测试了下面的代码。
个人意见,但它更适合阅读 .txt 文件。该函数将返回在给定函数的路径中找到的行数。如果它不是一个存在的文件,它将出错并退出。
def Get_Number_Lines(file_dir):
exists = os.path.isfile(file_dir)
if (exists):
print(file_dir)
line_count = 0
with open(file_dir, 'rb') as fin:
reader = fin.readlines()
for line in reader:
line_count += 1
return line_count
else:
print("ERROR: FILE \"" + file_dir + "\" does not exist.")
exit()
推荐阅读
- ms-word - 向单词添加缩短或超链接
- optaplanner - 使用 OptaPlanner 解决带有时间窗的车辆路线问题
- javascript - 单击子菜单需要添加路线并避免等待加载详细信息
- algorithm - 为什么在生产者/消费者问题中改变信号量的顺序很重要?
- javascript - 使用 AngleSharp 评估 javascript
- tensorflow - 更改模型 input_shape 但得到:ValueError:dense_44 层的输入 0 与该层不兼容
- json - 仅从 json 中删除/排除属性(如果存在)
- azure - Azure ARM 模板 - SQL 故障转移组错误 FailoverGroupCreateOrUpdateRequestReadOnlyPropertyModified
- reactjs - 使用act函数jest js创建多个异步测试时出错
- javascript - Discord.js 在节点上没有按预期工作