我注意到我有两种选择来在Python脚本中写入Linux中的文件。我可以创建Popen对象并使用shell重定向(例如“>”或“>>”)写入文件 - 或者我可以使用文件对象(例如open(),write(),close())。Python:使用Popen()与文件对象在Linux中写入文件
我已经玩了一会儿,注意到如果我需要使用其他shell工具,使用Popen会涉及更少的代码。例如,下面我尝试获取文件的校验和,并将其写入以PID命名的临时文件作为唯一标识符。 (我知道如果我再打电话POPEN但假装我不需要$$将改变):
Popen("md5sum " + filename + " >> /dir/test/$$.tempfile", shell=True, stdout=PIPE).communicate()[0]
下面是使用文件对象(匆匆写的)大致相当于。我使用os.getpid而不是$$,但我仍然使用md5sum,并且仍然需要调用Popen。
PID = str(os.getpid())
manifest = open('/dir/test/' + PID + '.tempfile','w')
hash = Popen("md5sum " + filename, shell=True, stdout=PIPE).communicate()[0]
manifest.write(hash)
manifest.close()
是否有任何优点/缺点要么接近?实际上,我试图将bash代码移植到Python中,并且希望使用更多的Python,但我不确定我应该在哪里去这里。