我刚刚开始学习python3中的文件处理。我尝试创建的代码接受用户提供的文件名,打开文件,然后打印出文件中的行数和字符总数。
问题是我必须分别为行数和字符数声明不同的变量(在下面的示例中为fh和fl)。
在以下按预期方式工作的代码中,如果我注释掉fl = open(fname)
行并将for line in fl:
更改为for line in fh
,则输出中的行数将变为零(不期望)
fname = input('Enter the file name: ')
fh = open(fname)
text = fh.read()
fl = open(fname)
count = 0
for line in fl:
count = count + 1
print("line count in", fname, ":", count)
print("word count in", fname, ":", len(text))
这是否意味着将来如果我要在同一文件上处理字符串函数,我必须声明不同的变量并多次读取同一文件?有没有一种方法可以实现“一次读取,多次使用”的目标?
答案 0 :(得分:0)
当您从打开的文件中读取行时,也会跟踪当前所在的偏移量。因此,在您读完所有行(如在for循环中)之后,该位置将位于文件的末尾。
您可以使用f.seek(0)
将文件中的当前位置重新设置为开头。然后,您可以再次执行for line in f
并两次浏览相同的内容,而不必两次open
。
请参见file methods。
当然,您也可以在读取文件时在一个循环中存储内容并计算行数。或使用readlines
方法获取文件中的行列表。使用readlines方法是一种仅读取文件并以有用的格式获取内容的好方法。