2024-04-25 16:48:15 发布
网友
好吧。我已经完成了我的第一个python程序,它有大约1000行代码。 在开发过程中,我在使用os.system()运行命令之前放置了大量print语句 比如说
os.system()
print
print "running command",cmd os.system(cmd)
现在我已经完成了这个计划。我考虑过对它们进行注释,但将所有这些不必要的打印(我不能删除所有print语句,因为有些语句为用户提供有用的信息)重定向到日志文件中会更有用吗?任何技巧或提示。
下一次,如果您从一开始就使用logging模块,而不是使用print语句,您会更高兴。它提供了你想要的控件,你可以让它在你想要的地方写入stdout。
logging
这里有很多人建议重定向stdout。这是一个丑陋的解决办法。它变异了一个全局,更糟糕的是,它为这个模块的使用而变异了它。我宁愿创建一个regex,将所有print foo更改为print >>my_file, foo,并将my_file设置为stdout或我选择的实际文件。
print foo
print >>my_file, foo
my_file
sys.stdout
os.system实际上总是不如使用subprocess模块。后者不需要调用shell,不以通常不需要的方式传递信号,并且可以以非阻塞的方式使用。
os.system
subprocess
你应该看看python logging module
编辑:示例代码:
import logging if __name__ == "__main__": logging.basicConfig(level=logging.DEBUG, filename="logfile", filemode="a+", format="%(asctime)-15s %(levelname)-8s %(message)s") logging.info("hello")
生成一个名为“logfile”的文件,其内容为:
2012-10-18 06:40:03,582 INFO hello
Python允许您捕获并分配sys.stdout—如前所述—以执行以下操作:
import sys old_stdout = sys.stdout log_file = open("message.log","w") sys.stdout = log_file print "this will be written to message.log" sys.stdout = old_stdout log_file.close()
下一次,如果您从一开始就使用
logging
模块,而不是使用print
语句,您会更高兴。它提供了你想要的控件,你可以让它在你想要的地方写入stdout。这里有很多人建议重定向stdout。这是一个丑陋的解决办法。它变异了一个全局,更糟糕的是,它为这个模块的使用而变异了它。我宁愿创建一个regex,将所有
print foo
更改为print >>my_file, foo
,并将my_file
设置为stdout或我选择的实际文件。sys.stdout
那么难看。os.system
实际上总是不如使用subprocess
模块。后者不需要调用shell,不以通常不需要的方式传递信号,并且可以以非阻塞的方式使用。你应该看看python logging module
编辑:示例代码:
生成一个名为“logfile”的文件,其内容为:
Python允许您捕获并分配sys.stdout—如前所述—以执行以下操作:
相关问题 更多 >
编程相关推荐