代码加行号打印
代码加行号打印
直接在终端显示文件的话是没有行数标记的,比如:
view plaincopy to clipboardprint?
$ cat a.c
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("Hello, world!\n");
return 0;
}
$
$ cat a.c
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("Hello, world!\n");
return 0;
}
$
用下面的脚本可以打印行数,原理是首先统计行数,然后计算需要显示的行数的宽度,再一边读取行一边打印,打印的同时在行首通过右对齐的方式插入行号。
view plaincopy to clipboardprint?
#!/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])
#!/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])
使用效果:
view plaincopy to clipboardprint?
$ 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 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
$
作者“雨婷的专栏”
相关内容
- 暂无相关文章
评论关闭