【发布时间】:2011-07-08 23:28:20
【问题描述】:
在this discussion 关于运行进程并丢弃其输出的最简单方法,我建议使用以下代码:
with open('/dev/null', 'w') as dev_null:
subprocess.call(['command'], stdout=dev_null, stderr=dev_null)
另一位开发者推荐了这个版本:
subprocess.call(['command'], stdout=open('/dev/null', 'w'), stderr=STDOUT)
我的 C++ 程序员想说,何时释放对象是一个实现细节,所以为了避免文件句柄在不确定的时间内打开,我应该使用with。但是resources 的couple 建议Python 总是或几乎总是对这样的代码使用引用计数,在这种情况下,文件句柄应该在subprocess.call 完成后立即回收,并且不需要使用with。
(我想将文件句柄留给/dev/null 不太重要,所以假装它是一个重要文件。)
哪种方法最好?
【问题讨论】:
-
您应该更喜欢使用
os.devnull而不是'/dev/null'。这比在这种情况下是否使用with之类的小细节更重要。
标签: python file-io garbage-collection with-statement