使用python内置命令写入文件与使用子进程运行类似的shell命令



如果我使用python命令,我必须打开一个文件,写入它,然后关闭它。

foo = open("file name", w+)
foo.write("blah")
foo.close() 

通过使用subprocess.run,我可以运行一个linux shell命令subprocess.call(['echo', 'blah', '>', 'foo'])

这种情况发生在一个无限循环中,每一秒重复一次,因此应该花费尽可能短的时间。

问题是我应该使用哪种方法?

这比你所期望的还要糟糕!重定向是一个shell操作,因此您的命令不会得到预期的结果。最好的情况下,如果它能在PATH中找到一个echo命令,它会在标准输出上写入blah > foo,更糟糕的情况是,它会因为找不到echo命令而失败。要使子流程命令工作,您必须添加一个shell=True参数。

然后,在每次操作中,您都将启动一个新的shell来执行echo命令。启动流程是一项昂贵的操作。如果你只每秒循环一次,它可能甚至不会引起注意,但它比直接写入文件要贵得多。

但最Python的方法是使用上下文管理器:

with open("file name", "w") as foo:
foo.write('blahn')

最新更新