如何使用Python查找文本文件中的行数?

3
  1. 我需要从给定的.tst文件中获取一个文本文件...并计算其中的行数。
  2. 我的输出结果为0。
  3. 我需要执行两次程序才能获得这些文本文件。
  4. 我的代码有问题吗?
name_of_file = raw_input("tst file address please:")

import re
f = open(name_of_file+".tst",'r')
data = f.read()
y = re.findall(r'Test Case:(.*?)TEST.UNIT:',data,re.DOTALL)
fb = open('tcases.txt' ,'w' )
for line in y :
 fb.write(line)
z = re.findall(r'TEST.SUBPROGRAM:(.*?)TEST.NEW',data,re.DOTALL)
fc = open('tsubprgs.txt' ,'w' )
for line in z :
 fc.write(line)
x = re.findall(r'TEST.UNIT:(.*?)TEST.SUBPROGRAM:',data,re.DOTALL)
fa = open('tunits.txt' ,'w' )
for line in x :
 fa.write(line)

with open('tunits.txt') as foo:
 lines = len(foo.readlines())
 print lines

你检查过 x = re.findall(r'TEST.UNIT:(.*?)TEST.SUBPROGRAM:',data,re.DOTALL) 是否匹配到任何内容了吗?你手动检查过文件 tunits.txt 是否为空吗? - Stefan van den Akker
是的,我检查了一下,发现它是空的...哦,顺便说一下,问题已经解决了...我只是添加了这个fa.close()...现在一切看起来都很好...无论如何,谢谢。 - Yaswanth
那么你应该自己添加一个答案。 - Bakuriu
3个回答

9

试试这个

with open(<pathtofile>) as f:
      print len(f.readlines())

1
在您的例子中,re.findall() 返回一个列表,您可以从中获取匹配数量,而无需重新打开和计算结果文件,例如:
x = re.findall(r'TEST.UNIT:(.*?)TEST.SUBPROGRAM:',data,re.DOTALL)
num_tunits = len(x)

请查看其他答案,了解文件行计数的想法。


谢谢,它起作用了.. :) - Yaswanth

0
myfile = "names.txt"

num_names = 0

with open(myfile, 'r') as f:
    for line in f:
    names = line.split()

    num_names += len(names)

print (num_names)

1
您可以通过添加解释此代码的功能和解决问题的方式来使此答案更有用。教学性的答案比没有解释的代码更有用。 - Ryan Bemrose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接