2024-09-30 05:29:01 发布
网友
嗨,我正在尝试使用以下命令从python执行shell脚本。在
os.system("sh myscript.sh")
在我的shell脚本中,我编写了一些SOP,现在如何在Python中获取SOP,以便将它们记录到某个文件中?在
我知道使用subprocess.Popen我可以做到,但由于某些原因我不能使用它。在
subprocess.Popen
如果我没弄错你的问题,你想要这样的东西:
import subprocess find_txt_command = ['find', '-maxdepth', '2', '-name', '*.txt'] with open('mylog.log', 'w') as logfile: subprocess.call(find_txt_command, stdout=logfile, shell=False)
如果需要,可以用Popen代替call,语法非常相似。请注意,command是一个包含要运行的进程和参数的列表。一般来说,如果希望使用shell=False的Popen/call,则可以防止难以调试的意外行为,并且更易于移植。在
我个人建议您将shell参数保留为其默认值False。在这种情况下,第一个参数不是您在终端中键入的字符串,而是一个“单词”列表,第一个是程序,后面的是参数。这意味着不需要引用参数,从而使程序对空白参数和injection attacks更有弹性。在
shell
False
这应该可以做到:
p = subsprocess.Popen(['DMEARAntRunner', mount_path], stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
与执行shell命令一样,问题仍然是它是否是解决问题的最简单/最好的方法,但这是另一个讨论。在
请检查使用python中的subprocess模块的official documentation。这是目前推荐的方法操作系统调用以执行系统函数并检索结果。上面的链接给出了非常接近您需要的示例。在
如果我没弄错你的问题,你想要这样的东西:
如果需要,可以用Popen代替call,语法非常相似。请注意,command是一个包含要运行的进程和参数的列表。一般来说,如果希望使用shell=False的Popen/call,则可以防止难以调试的意外行为,并且更易于移植。在
我个人建议您将
shell
参数保留为其默认值False
。在这种情况下,第一个参数不是您在终端中键入的字符串,而是一个“单词”列表,第一个是程序,后面的是参数。这意味着不需要引用参数,从而使程序对空白参数和injection attacks更有弹性。在这应该可以做到:
与执行shell命令一样,问题仍然是它是否是解决问题的最简单/最好的方法,但这是另一个讨论。在
请检查使用python中的subprocess模块的official documentation。这是目前推荐的方法操作系统调用以执行系统函数并检索结果。上面的链接给出了非常接近您需要的示例。在
相关问题 更多 >
编程相关推荐