2016-01-26 100 views
2
import sys 
import os 
import glob 
directory_input = raw_input("path to base directory?") 
directory = directory_input 

for folder in glob.glob(os.path.join(directory,"savedrecs(*).txt")): 
    a = 0 
    for file in glob.glob(os.path.join(folder, "savedrecs(*).txt")): 
     a=sum(not line.strip() == "\n" for line in searchfile) 
    print a 

这是我的代码,而是一个= SUM(未line.strip()==“\ n”个部分不工作,结果始终为零。如何计算文本文件中的空行数?

+4

您可以显示完整的代码,和确切的结果?例如,你如何做计数,你如何打开文件,你如何阅读线条。 –

+3

'苏m(不是line.strip()用于f中的行)' –

+2

你的第一种方法应该可行。给一个它没有的输入文件。 – timgeb

回答

3

你永远不打开文件和你的glob模式不查找文件夹,它查找文件,只需glob的一次用户定义的目录,打开每个文件sum时代not line.strip()值为True:

import os 
import glob 
directory = raw_input("path to base directory?") 


for fle in glob.glob(os.path.join(directory,"savedrecs*.txt")): 
    with open(fle) as f: 
     sm = sum(not line.strip() for line in f) 
     print("{} has {} empty lines".format(fle, sm)) 
+0

谢谢!一个问题,line.strip()和line.strip()==“”做了什么区别,strip命令实际上做了什么? –

+0

两者都是等价的,就像检查一个空列表,元组等一样。你不必明确理解一个空字符串,strip会去掉任何换行符,所以如果剥离后你有一个空字符串,你知道你有一个空白线。 –