我正在编写一个简单的函数,该函数采用文本文件的路径并返回该文件中包含的行数。
我已经确保使用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行,我不确定为什么。
答案 0 :(得分:1)
我已经使用“ 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()
答案 1 :(得分:0)
赞赏所有建议。所以我发现在调用get_number_lines()函数之前,我已经打开了一个文件对象(处于写模式)。
write_file = open(outputFileDir,"w+")
# do stuff
get_number_lines(outputFileDir)
然后我尝试在调用函数之前关闭文件,该函数解决了我遇到的问题。出于好奇,我也尝试了一下,但没有问题:
write_file = open(outputFileDir,"w+")
# do stuff
write_file.close()
read_file.open(outputFileDir,"r")
get_number_lines(outputFileDir)
我没有意识到有两个文件对象(一个读对象,一个写对象)会导致此问题。