代码加行号打印

23 篇文章 0 订阅
17 篇文章 0 订阅

直接在终端显示文件的话是没有行数标记的,比如:

$ cat a.c
#include <stdio.h>
int main(int argc, const char *argv[])
{
	printf("Hello, world!\n");
	return 0;
}
$ 

用下面的脚本可以打印行数,原理是首先统计行数,然后计算需要显示的行数的宽度,再一边读取行一边打印,打印的同时在行首通过右对齐的方式插入行号。

#!/usr/bin/env python
import sys
def print_code(pathname):
    line_count = 0
    f = open(pathname)
    s = f.readline()
    while s:
        line_count += 1
        s = f.readline()
    align = len(str(line_count)) + 1
    f.seek(0)
    line_num = 1
    s = f.readline()
    print str(line_num).rjust(align), s,
    while s:
        line_num += 1
        s = f.readline()
        print str(line_num).rjust(align), s,
    f.close()
if __name__ == '__main__':
    if len(sys.argv) == 1:
        print "usage : " + sys.argv[0] + " <file>"
    for i in range(1, len(sys.argv)):
        print_code(sys.argv[i])
使用效果:

$ python codenum.py a.c
 1 #include <stdio.h>
 2 int main(int argc, const char *argv[])
 3 {
 4 	printf("Hello, world!\n");
 5 	return 0;
 6 }
 7 
$ 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值