用python实现如下统计功能

发布网友 发布时间:2022-04-23 17:11

我来回答

3个回答

懂视网 时间:2022-04-18 17:31

本篇文章给大家带来的内容是关于Python实现代码行数统计工具的功能(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

我们经常想要统计项目的代码行数,但是如果想统计功能比较完善可能就不是那么简单了, 今天我们来看一下如何用python来实现一个代码行统计工具。

思路:首先获取所有文件,然后统计每个文件中代码的行数,最后将行数相加.

实现的功能:

统计每个文件的行数;

统计总行数;

统计运行时间;

支持指定统计文件类型,排除不想统计的文件类型;

递归统计文件夹下包括子文件件下的文件的行数;

排除空行;

# coding=utf-8
import os
import time
basedir = '/root/script'
filelists = []
# 指定想要统计的文件类型
whitelist = ['php', 'py']
#遍历文件, 递归遍历文件夹中的所有
def getFile(basedir):
 global filelists
 for parent,dirnames,filenames in os.walk(basedir):
 #for dirname in dirnames:
 # getFile(os.path.join(parent,dirname)) #递归
 for filename in filenames:
  ext = filename.split('.')[-1]
  #只统计指定的文件类型,略过一些log和cache文件
  if ext in whitelist:
  filelists.append(os.path.join(parent,filename))
#统计一个文件的行数
def countLine(fname):
 count = 0
 for file_line in open(fname).xreadlines():
 if file_line != '' and file_line != '
': #过滤掉空行
  count += 1
 print fname + '----' , count
 return count
if __name__ == '__main__' :
 startTime = time.clock()
 getFile(basedir)
 totalline = 0
 for filelist in filelists:
 totalline = totalline + countLine(filelist)
 print 'total lines:',totalline
 print 'Done! Cost Time: %0.2f second' % (time.clock() - startTime)

结果:

[root@pythontab script]# python countCodeLine.py 
/root/script/test/gametest.php---- 16
/root/script/smtp.php---- 284
/root/script/gametest.php---- 16
/root/script/countCodeLine.py---- 33
/root/script/sendmail.php---- 17
/root/script/test/gametest.php---- 16
total lines: 382
Done! Cost Time: 0.00 second
[root@pythontab script]#

统计php和python文件,非常方便。

其实大家还可以在此基础上进行改进,比如:排除注释行等等。

热心网友 时间:2022-04-18 14:39

你这个问题的难点在于不知道水果到底有多少种,所以需要先遍历每一行,获取全部的水果类型放入列表,最后用set去重,得到有多少种水果种类。然后重新打开文本读取,再统计水果重量。

代码如下:

# 打开文本统计水果种类
file=open("test.txt",encoding="utf-8")
fruits_list=[]
while True:
    str = file.readline()
    if len(str)==0:
        break
    list1=str.split("|")
    fruits=list1[3]
    fruits_list.append(fruits)
fruits_list=list(set(fruits_list))
file.close()

# 创建字典,key为水果品质,value为0
dic={}
for i in fruits_list:
    dic[i]=0
print(dic)

# 再次打开文件
file=open("test.txt",encoding="utf-8")
while True:
    str=file.readline()
    if len(str)==0:
        break
    list2=str.split("|")
    for i in dic:
        if i==list2[3]:
            dic[i]=dic[i]+int(list2[4])
file.close()
print(dic)

追问

研究出来了,其实不用处理2遍文件的,太麻烦了,贴出来我写的,共享下。看你还专门手动写了代码,答案给你了。

热心网友 时间:2022-04-18 15:57

for遍历readlines,对每一行的结果做split("|"),取后两行,用dict存起来,品种做key,量做value
如果不会写就看一下for循环,文件读取,string.split()方法,dict数据类型追问

我写了个这,但是报错,所以才问的,能说下错哪里了吗?小白初玩,还请指教

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com