Python 一个计算文件中行数和字符数的函数

Python a function that counts lines and characters in a file

谁能看看我到目前为止做了什么?我自己还没成功定位到问题

def txt_file(file1):
    file1 = open('text.txt', 'r')
    linecount = 0
    charcount = 0
    for line in file1:
        linecount +=1
        for char in line:
            charcount += 1
    print "file1 contains", linecount, "lines and", charcount, "characters."
    file1.close()

当您使用 for 循环时:

for line in file1:
    line += 1

for循环中的变量line只是循环遍历的变量的调用,与你要查找的内容无关。相反,在做了一些研究之后,试试这个行:

linecount = open(file1).read().count('\n')

对于字符,使用 for 循环排除空格:

for i in file1:
    if i != " ":
        charcount += 1

问题是打印语句一次缩进太多了。每次for循环都会执行,需要移到最后。

更好的方法是使用 len:

file1=open("foo.txt", "r").readlines()

linecount=len(x)
charcount=sum(map(len, x))

print "file1 contains {0} lines and {1} characters".format(linecount, charcount)

charcount 之所以有效,是因为它获取每一行的 len,然后对它们求和。

这样更容易:

with open('text.txt') as the_file:
     data = [len(i) for i in the_file]
     line, char = len(data), sum(data)

您的代码中有几个错误:

  • 缩进
  • 打印必须在行循环外
  • 你声明了一个你实际上不使用的函数参数

试试这个代码:

file1 = open('textfile.txt', 'r')
linecount = 0
charcount = 0
for line in file1:
    linecount +=1
    for char in line:
        charcount += 1
print ("file1 contains", linecount, "lines and", charcount, "characters.")
file1.close()

如果您需要一个函数,可以这样定义和调用它:

def txt_file():
    file1 = open('textfile.txt', 'r')
    linecount = 0
    charcount = 0
    for line in file1:
        linecount +=1
        for char in line:
            charcount += 1
    print ("file1 contains", linecount, "lines and", charcount, "characters.")
    file1.close()
if __name__ == "__main__":
    txt_file()

在包含以下三行的示例文件中:

First Line
Second Line
Third Line

它产生以下输出:

file1 contains 3 lines and 33 characters.

(它也计算 space 和换行符)