我需要在python中获取大文件(数十万行)的行数.记忆和时间方面最有效的方法是什么?
目前我这样做:
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
Run Code Online (Sandbox Code Playgroud)
有可能做得更好吗?
是否可以在整个解决方案中找到代码行数?我听说过MZ-Tools,但它是否有开源的等价物?
我如何计算git存储库中所有文件中存在的总行数?
git ls-files
给我一个git跟踪的文件列表.
我正在寻找cat
所有这些文件的命令.就像是
git ls-files | [cat all these files] | wc -l
Run Code Online (Sandbox Code Playgroud) 在GitHub存储库中,您可以看到"语言统计信息",它显示用一种语言编写的项目的百分比.但是,它不会显示项目包含的代码行数.通常,我希望能够快速了解项目的规模和复杂性,并且代码行数可以给人留下良好的第一印象.500行代码意味着一个相对简单的项目,100,000行代码意味着一个非常大/复杂的项目.
那么,是否有可能从GitHub存储库中获取用各种语言编写的代码行,最好不要克隆它?
问题" 计算git存储库中的行数"询问如何计算本地Git存储库中的代码行,但是:
总而言之,这对于"快速检查项目规模"来说可能太耗费时间.
我已经尝试了Metrics插件,虽然它很好,但并不是我老板想要的.它只用一条}
作为一条线来计算一条线,他不希望这被视为"它不是一条线,它是一种风格选择".我还需要生成有关所提供指标的某种形式的报告.这有什么好的工具吗?
显然,可以使用fgetl或类似函数循环遍历文件并递增计数器,但有没有办法确定文件中的行数而不进行这样的循环?
在对该文件执行某些操作之前,我需要读取文件中的行数.当我尝试读取文件并在每次迭代时递增line_count变量,直到我达到eof.在我的情况下,这并不是那么快.我同时使用了ifstream和fgets.他们都很慢.有没有一种hacky方法可以做到这一点,例如BSD,Linux内核或berkeley db也可以使用它(可以使用按位运算).
正如我之前所说,该文件中有数百万行,并且它会不断变大,每行约有40或50个字符.我正在使用Linux.
注意:我确信会有人说可能会使用数据库白痴.但在我的情况下,我不能使用数据库.
我现在有一个非常简单的脚本,它使用以下方法计算文本文件中的行enumerate()
:
i = 0
f = open("C:/Users/guest/Desktop/file.log", "r")
for i, line in enumerate(f):
pass
print i + 1
f.close()
Run Code Online (Sandbox Code Playgroud)
这需要大约3分半钟才能完成大约3000万行的15GB日志文件.如果我能在两分钟或更短的时间内得到它,那将是很好的,因为这些是每日日志,我们想要进行每月分析,因此代码必须处理30个~15GB的日志 - 可能超过一个半小时,我们希望尽量减少服务器上的时间和内存负载.
我也会接受一个很好的近似/估计方法,但它需要大约4 sig fig准确...
谢谢!
构建项目时,有两个地方报告源行计数:
在Delphi 2007中,这两个数字对于我们正在构建的项目是相同的.
在Delphi 2010中,这两个数字截然不同.(1)计数大于100万行或40%.(第二)计数足够接近Delphi 2007计数,以满足正在构建的正确文件,以解释移植到D2010的代码更改.源文件的替代版本在构建环境中根本不存在.
所以问题是:
为什么D2010中的第一和第二行数量如此大不相同,因为它们在D2007中是可以理解的相同?
我正在尝试将每个作者的每行贡献打印到Git存储库.
为此,我使用以下命令,改编自如何计算Git存储库中特定作者更改的总行数?
git ls-tree -r -z --name-only HEAD -- */*.c | xargs -0 -n1 git blame \
--line-porcelain HEAD |grep "^author "|sort|uniq -c|sort -nr
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
fatal: cannot stat path 'HEAD': No such file or directory.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
line-count ×10
git ×3
python ×2
bash ×1
c++ ×1
code-metrics ×1
delphi ×1
delphi-2010 ×1
eclipse ×1
enumerate ×1
file-io ×1
github ×1
matlab ×1
metrics ×1
shell ×1
text-files ×1