一、文件的目录
import os
base_dir = 'F:\python\\text-image\\text'
dir1 = 'train'
注意以下两个语句的区别:
a = open(os.path.join(base_dir,dir1) + dir1 + '.txt')
# 会在F:\python\\text-image\\text目录下新建一个文件名为traintrain.txt的txt文件。
a = open(os.path.join(base_dir,dir1) + '\\' + dir1 + '.txt')
# 会在F:\python\text-image\text\train目录下新建一个文件名为train.txt的txt文件。
二、打开与关闭文件句柄的操作
with open('F:\python\\text-image\\text\trip.txt', encoding='utf-8') as dir1_obj:
print(len(dir1_obj.readlines()))
# 可以正确获得文件行数
print(len(dir1_obj.readlines()))
# 显示文件行数为0
with open('F:\python\\text-image\\text\\trip.txt', encoding='utf-8') as dir1_obj:
print(len(dir1_obj.readlines()))
# 可以正确获得文件行数
dir1_obj.close()
dir1_obj = open('F:\python\\text-image\\text\\trip.txt', encoding='utf-8')
print(len(dir1_obj.readlines()))
# 可以正确获得文件行数
第一种情况出现的原因是第一次输出文件的行数时,文件对象指针会遍历整个文件,所以,此时,指针在文件末尾,当第二次想再输出文件的行数时,指针在末尾,读不到数据了,显然,就会输出0。第二种情况两次都能正确输出文件的行数,显而易见,重新打开文件,指针肯定又回到了文件开头。
其实,想对一个打开的文件多次遍历,不需要这么麻烦,不需要多次打开,关闭。下面语句可以让指针重新回到文件开头。
with open('F:\python\\text-image\\text\\trip.txt', encoding='utf-8') as dir1_obj:
print(len(dir1_obj.readlines()))
# 可以正确获得文件行数
dir1_obj.seek(0)
# 指针回到文件开头
print(len(dir1_obj.readlines()))
# 可以正确获得文件行数