1 import os
2 import sys
3
4 def find_file(root_dir, type):
5 dirs_pool = [root_dir]
6 dest_pool = []
7
8 def scan_dir(directory):
9 entries = os.walk(directory)
10 for root, dirs, files in entries:
11 dirs_pool.extend([os.path.join(root, dir_entry) for dir_entry in dirs])
12 for file_entry in files:
13 if type in str(file_entry)[-len(type):]:
14 dest_pool.append(''.join(os.path.join(root, file_entry)))
15
16 while dirs_pool:
17 scan_dir(dirs_pool.pop())
18 return dest_pool
19
20 def gen_ps(root_dir, type):
21 vim_cmd = 'vim -me -e -c ":hardcopy >%.ps" -c ":q" '
22 ps2pdf_cmd = 'ps2pdf {filename}.ps {filename}.pdf'
23 dests = find_file(root_dir, type)
24 if not dests:
25 return
26 print 'found these source code files:'
27 for dest in dests:
28 print dest
29 print 'begin generate ps files!'
30 for dest in dests:
31 command = ''.join([vim_cmd, dest])
32 print command
33 os.system(command)
34 for dest in dests:
35 command = ps2pdf_cmd.format(filename=dest)
36 print command
37 os.system(command)
38
39 if __name__ == '__main__':
40 if len(sys.argv) == 3:
41 gen_ps(sys.argv[1], sys.argv[2])
42 else:
43 print 'usage: python code2pdf.py directory filetype\n' \
44 'such as: python code2pdf.py /home/bruce/python .py'