这可以做到:
""" Strip comments and docstrings from a file."""import sys, token, tokenizedef do_file(fname): """ Run on just one file. """ source = open(fname) mod = open(fname + ",strip", "w") prev_toktype = token.INDENT first_line = None last_lineno = -1 last_col = 0 tokgen = tokenize.generate_tokens(source.readline) for toktype, ttext, (slineno, scol), (elineno, ecol), ltext in tokgen: if 0: # Change to if 1 to see the tokens fly by. print("%10s %-14s %-20r %r" % ( tokenize.tok_name.get(toktype, toktype), "%d.%d-%d.%d" % (slineno, scol, elineno, ecol), ttext, ltext )) if slineno > last_lineno: last_col = 0 if scol > last_col: mod.write(" " * (scol - last_col)) if toktype == token.STRING and prev_toktype == token.INDENT: # Docstring mod.write("#--") elif toktype == tokenize.COMMENT: # Comment mod.write("##n") else: mod.write(ttext) prev_toktype = toktype last_col = ecol last_lineno = elinenoif __name__ == '__main__': do_file(sys.argv[1])我将存根注释替换为文档字符串和注释,因为它简化了代码。如果完全删除它们,则还必须在它们之前消除缩进。



