代码加行号打印

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

$ 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 
$ 


你可能感兴趣的:(python,脚本,File,终端)