发段统计代码行数的小程序

发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 105235 2009), 转信

本人刚写的统计当前目录及子目录内所有.h和.cpp文件的非空代码行数,想请教版

上各位高手还有没有更pythonic的写法

– coding cp936 –

import os

totalline,totalfile = 0,{}

for root, dirs,files in os.walk(os.getcwd(),True)

flst = [f for f in files if os.path.splitext(os.path.split(f)[1])[1] in

(.cpp,.h)]

for f in flst

    fname = os.path.join(root,f)

    ft = open(fname)

    totalfile[fname] = len([t for t in ft if len(t.strip())!= 0])

    totalline += totalfile[fname]

    ft.close()

    print %s %d行代码 % (fname, totalfile[fname])

print 整个工程有代码%d行,文件%d个 % (totalline, len(totalfile))

os.system(‘pause’)

※ 来源・水木社区 httpnewsmth.net・[FROM 218.5.2.]

[本篇全文] [回复文章] [本篇作者:jigloo] [回信给作者] [进入讨论区] [返回顶部]

2

发信人 jigloo (帅过王力宏), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 111546 2009), 转信

写了一个,请诸位指教

def findfiles(path)

for root, dirs, names in os.walk(path)

    for name in names

        yield os.path.join(root, name)

def countlines(filename)

return len([x for x in open(filename) if x.strip()])

if name == ‘main

lines = dict((x, countlines(x)) for x in findfiles('.') if x.endswith(('.h', 'cpp')))

print u'共有%d文件,%d行' % (len(lines), sum(lines.itervalues()))

【 在 mabuaa (jackyma) 的大作中提到 】

 本人刚写的统计当前目录及子目录内所有.h和.cpp文件的非空代码行数,想请教版

上各位高手还有没有更pythonic的写法

# – coding cp936 –

……………….

※ 来源・水木社区 httpnewsmth.net・[FROM 221.6.27.]

[本篇全文] [回复文章] [本篇作者:Kone] [回信给作者] [进入讨论区] [返回顶部]

3

发信人 Kone (Kneo), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 112715 2009), 转信

我发现list comprehension的一个结果是导致代码行变长,每行括号增多,读起来很吃力。

【 在 jigloo (帅过王力宏) 的大作中提到 】

写了一个,请诸位指教

def findfiles(path)

 for root, dirs, names in os.walk(path)

……………….

※ 来源・水木社区 newsmth.net・[FROM 222.190.111.]

[本篇全文] [回复文章] [本篇作者:jigloo] [回信给作者] [进入讨论区] [返回顶部]

4

发信人 jigloo (帅过王力宏), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 113045 2009), 转信

恩,列表表达式很好用可是这个问题很令人苦恼

我后来都这样写比较长的列表表达式了

lines = dict( (x, countlines(x))

              for x in findfiles('.')

              if x.endswith(('.ini', 'cpp'))

            )

【 在 Kone (Kneo) 的大作中提到 】

我发现list comprehension的一个结果是导致代码行变长,每行括号增多,读起来很吃力。

※ 来源・水木社区 httpnewsmth.net・[FROM 221.6.27.]

[本篇全文] [回复文章] [本篇作者:mabuaa] [回信给作者] [进入讨论区] [返回顶部]

5

发信人 mabuaa (jackyma), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 113146 2009), 转信

不错,受教了

【 在 jigloo (帅过王力宏) 的大作中提到 】

写了一个,请诸位指教

def findfiles(path)

 for root, dirs, names in os.walk(path)

……………….

※ 来源・水木社区 httpnewsmth.net・[FROM 218.5.2.]

[本篇全文] [回复文章] [本篇作者:yifanw] [回信给作者] [进入讨论区] [返回顶部]

6

发信人 yifanw (王轶凡), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 113514 2009), 转信

我一般使用glob.glob()来根据pattern找文件,和unix shell的格式是一样的:

glob.glob(.h)

返回当前目录所以.h文件的文件名

还有就是openclose文件,使用with statement可能比较好

【 在 mabuaa (jackyma) 的大作中提到 】

 本人刚写的统计当前目录及子目录内所有.h和.cpp文件的非空代码行数,想请教版

上各位高手还有没有更pythonic的写法

# – coding cp936 –

……………….

欢迎来CSARCH版

※ 修改・yifanw 于 Jan 6 115214 2009 修改本文・[FROM 202.101.8.]

※ 来源・水木社区 newsmth.net・[FROM 202.101.8.]

[本篇全文] [回复文章] [本篇作者:yifanw] [回信给作者] [进入讨论区] [返回顶部]

7

发信人 yifanw (王轶凡), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 113636 2009), 转信

文件未关闭

【 在 jigloo (帅过王力宏) 的大作中提到 】

写了一个,请诸位指教

def findfiles(path)

 for root, dirs, names in os.walk(path)

……………….

欢迎来CSARCH版

※ 来源・水木社区 newsmth.net・[FROM 202.101.8.]

[本篇全文] [回复文章] [本篇作者:jigloo] [回信给作者] [进入讨论区] [返回顶部]

8

发信人 jigloo (帅过王力宏), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 113839 2009), 转信

偷懒了一下 )

【 在 yifanw (王轶凡) 的大作中提到 】

文件未关闭

※ 来源・水木社区 httpnewsmth.net・[FROM 221.6.27.]

[本篇全文] [回复文章] [本篇作者:Essien5] [回信给作者] [进入讨论区] [返回顶部]

9

发信人 Essien5 (宝贝晶~), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 114545 2009), 转信

统计行数这种微型应用python上去牛刀了。。。

find . ( -name .cpp -o -name .h ) -exec cat {} ;grep -v ^$wc -l

【 在 mabuaa (jackyma) 的大作中提到 】

 本人刚写的统计当前目录及子目录内所有.h和.cpp文件的非空代码行数,想请教版

上各位高手还有没有更pythonic的写法

# – coding cp936 –

……………….

※ 来源・水木社区 newsmth.net・[FROM 122.200.72.]

[本篇全文] [回复文章] [本篇作者:vonNeumann] [回信给作者] [进入讨论区] [返回顶部]

10

发信人 vonNeumann (冯・诺伊曼), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 114811 2009), 转信

lz贴的代码里有“– coding cp936 –”,我猜伊在windows下..

【 在 Essien5 (宝贝晶~) 的大作中提到 】

统计行数这种微型应用python上去牛刀了。。。

find . ( -name .cpp -o -name .h ) -exec cat {} ;grep -v ^$wc -l

※ 来源・水木社区 newsmth.net・[FROM 209.173.238.]

[本篇全文] [回复文章] [本篇作者:iLibra] [回信给作者] [进入讨论区] [返回顶部]

11

发信人 iLibra (楠~月之暗面), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 115200 2009), 转信

统计行数还比较简单,

有没有人能够写个工具

比较两个版本间增加删除修改的行数?(不包括注释和空行)

【 在 mabuaa (jackyma) 的大作中提到 】

 本人刚写的统计当前目录及子目录内所有.h和.cpp文件的非空代码行数,想请教版

上各位高手还有没有更pythonic的写法

# – coding cp936 –

……………….

我们是丸子,我们是丸子

香香的肉丸子,香香的肉丸子,

一定会被吃掉,吃掉~

※ 来源・水木社区 httpnewsmth.net・[FROM 59.108.125.]

[本篇全文] [回复文章] [本篇作者:jigloo] [回信给作者] [进入讨论区] [返回顶部]

12

发信人 jigloo (帅过王力宏), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 115635 2009), 转信

python正好有difflib来做吧。

httpdocs.python.orglibrarydifflib.html

httpwww.oreillynet.comonlampblog200710pymotw_difflib.html

【 在 iLibra (楠~月之暗面) 的大作中提到 】

统计行数还比较简单,

有没有人能够写个工具

比较两个版本间增加删除修改的行数?(不包括注释和空行)

※ 来源・水木社区 httpnewsmth.net・[FROM 221.6.27.]

[本篇全文] [回复文章] [本篇作者:Andor] [回信给作者] [进入讨论区] [返回顶部]

13

发信人 Andor (柠檬汁), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 121244 2009), 转信

【 在 Essien5 (宝贝晶~) 的大作中提到 】

统计行数这种微型应用python上去牛刀了。。。

find . ( -name .cpp -o -name .h ) -exec cat {} ;grep -v ^$wc -l

他在 Windows 下。

而且完全实现楼主程序的功能得这样:

grep –include ‘.cpp’ –include ‘.h’ ^s$ . -rvc

grep –include ‘.cpp’ –include ‘.h’ ^s$ . -rvc wc -l

grep –include ‘.cpp’ –include ‘.h’ ^s$ . -rv wc -l

※ 来源・水木社区 newsmth.net・[FROM 220.249.41.]

[本篇全文] [回复文章] [本篇作者:mabuaa] [回信给作者] [进入讨论区] [返回顶部]

14

发信人 mabuaa (jackyma), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 133314 2009), 转信

【 在 yifanw (王轶凡) 的大作中提到 】

我一般使用glob.glob()来根据pattern找文件,和unix shell的格式是一样的:

glob.glob(.h)

返回当前目录所以.h文件的文件名

还有就是openclose文件,使用with statement可能比较好

                       ~~~~~~~~~~~~~~~~~~~请教下这个怎么用

※ 来源・水木社区 httpnewsmth.net・[FROM 218.5.2.]

[本篇全文] [回复文章] [本篇作者:wyxzellux] [回信给作者] [进入讨论区] [返回顶部]

15

发信人 wyxzellux (null), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 135819 2009), 转信

httpwww.python.orgdevpepspep-0343

【 在 mabuaa (jackyma) 的大作中提到 】

我一般使用glob.glob()来根据pattern找文件,和unix shell的格式是一样的:

glob.glob(.h)

返回当前目录所以.h文件的文件名

……………….

※ 来源・水木社区 newsmth.net・[FROM 211.99.222.]

[本篇全文] [回复文章] [本篇作者:Purusa] [回信给作者] [进入讨论区] [返回顶部]

16

发信人 Purusa (木偶机器人), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 140031 2009), 转信

不管用哪种语言,一行里压缩过多的内容都会导致晦涩难读。所以问题不是list

comprehension而是不要在一行里使用过多的概念或者说名字。

【 在 Kone (Kneo) 的大作中提到 】

我发现list comprehension的一个结果是导致代码行变长,每行括号增多,读起来很吃力。

There are 10 types of people in the world; those who know binary and those who don’t.

※ 来源・水木社区 newsmth.net・[FROM 70.110.36.]

[本篇全文] [回复文章] [本篇作者:Kone] [回信给作者] [进入讨论区] [返回顶部]

17

发信人 Kone (Kneo), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 141657 2009), 转信

用Python的似乎特别喜欢在一行里面放过多的逻辑。原因之一或许就是list comprehen

sion鼓励把东西写在一起。

【 在 Purusa (木偶机器人) 的大作中提到 】

不管用哪种语言,一行里压缩过多的内容都会导致晦涩难读。所以问题不是list

comprehension而是不要在一行里使用过多的概念或者说名字。

※ 来源・水木社区 newsmth.net・[FROM 222.190.111.]

[本篇全文] [回复文章] [本篇作者:iLibra] [回信给作者] [进入讨论区] [返回顶部]

18

发信人 iLibra (楠~月之暗面), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 142433 2009), 转信

把程序弄的晦涩就不好了,

那就不是python是perl。。。。。

【 在 Kone (Kneo) 的大作中提到 】

用Python的似乎特别喜欢在一行里面放过多的逻辑。原因之一或许就是list comprehen

sion鼓励把东西写在一起。

我们是丸子,我们是丸子

香香的肉丸子,香香的肉丸子,

一定会被吃掉,吃掉~

※ 来源・水木社区 httpnewsmth.net・[FROM 59.108.125.]

[本篇全文] [回复文章] [本篇作者:Purusa] [回信给作者] [进入讨论区] [返回顶部]

19

发信人 Purusa (木偶机器人), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 142901 2009), 转信

这不能怪到python头上。我记得我小时候学BASIC的时候,什么计算机报上特别喜欢

登一行小程序,有的程序甚至就是一个小游戏。人有炫耀智力的倾向。现在教编程

的,极少有讲如何良好地组织表达程序的,以及写程序的风格。list comprehension

的本质是列表运算,即从一个列表导出另外一个列表。当这个过程过于复杂的时候,

强行用一行程序表达出来,是编程者忽略写作表现形式的结果。这也许和早期教育

中鼓励智力挑战的倾向有关。

【 在 Kone (Kneo) 的大作中提到 】

用Python的似乎特别喜欢在一行里面放过多的逻辑。原因之一或许就是list comprehen

sion鼓励把东西写在一起。

There are 10 types of people in the world; those who know binary and those who don’t.

※ 来源・水木社区 newsmth.net・[FROM 70.110.36.]

[本篇全文] [回复文章] [本篇作者:mirror] [回信给作者] [进入讨论区] [返回顶部]

20

发信人 mirror (相当的弱长期靠丢丢打架可怜的丢丢), 信区 Python

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 160228 2009), 转信

【 在 Kone (Kneo) 的大作中提到 】

标 题 Re 发段统计代码行数的小程序

发信站 水木社区 (Tue Jan 6 141657 2009), 转信

用Python的似乎特别喜欢在一行里面放过多的逻辑。原因之一或许就是list comprehen

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~没感觉到哎。

sion鼓励把东西写在一起。

【 在 Purusa (木偶机器人) 的大作中提到 】

不管用哪种语言,一行里压缩过多的内容都会导致晦涩难读。所以问题不是list

comprehension而是不要在一行里使用过多的概念或者说名字。

I’m terribly sorry if there are any errors in this document.

 It's 516 AM and I haven't gotten to bed yet

 I'm new to WSGI

                            --epicRelic

Go to bed, you fool! I enjoyed this.

                            --Poromenos

Powered by Jekyll and Theme by solid

本站总访问量