如何在Python脚本中调用外部命令(就像我在Unix shell或Windows命令提示符下键入它一样)?
我用subprocess模块调用不同的进程.但是,我有一个问题.
在以下代码中:
callProcess = subprocess.Popen(['ls', '-l'], shell=True)
Run Code Online (Sandbox Code Playgroud)
和
callProcess = subprocess.Popen(['ls', '-l']) # without shell
Run Code Online (Sandbox Code Playgroud)
两者都有效.阅读文档后,我开始知道这shell=True意味着通过shell执行代码.这意味着在缺席的情况下,该过程将直接启动.
那么我应该更喜欢我的情况 - 我需要运行一个进程并获得其输出.从shell内部或外部调用它有什么好处.
如何从Python脚本启动一个进程(例如另一个Python脚本),以便"子"进程与"父"完全分离,因此父进程可以a)继续其快乐方式而无需等待子进程完成和b)可以在不终止子进程的情况下终止?
家长:
import os
print "Parent started"
os.system("./child.py")
print "Parent finished"
Run Code Online (Sandbox Code Playgroud)
儿童:
import time
print "Child started"
time.sleep(10)
print "Child finished"
Run Code Online (Sandbox Code Playgroud)
运行parent.py打印:
Parent started
Child started
Child finished
Parent finished
Run Code Online (Sandbox Code Playgroud)
我想要它打印:
Parent started
Child started
Parent finished
(seconds later)
Child finished
Run Code Online (Sandbox Code Playgroud) 我需要更新 .mp4 文件的创建时间,以便它出现在按创建日期排序的媒体文件列表的顶部。我可以使用 os.utime 轻松更新文件的访问日期和修改日期,但尚未找到将文件的创建日期更改为“现在”的好方法。
我的最终目标是使用 appium 将媒体文件种子到 iOS 模拟器,并在该脚本中访问这些媒体文件。问题是视频文件不会显示在应用程序的“最近添加”部分,因为它已经有几天了。
根据此:
在上一节中,我们看到了该
os.system()函数的正常工作。但是不建议您执行Shell命令。我们将使用Python子进程模块执行系统命令。
作者从没os.system()在他/她的帖子中提到为什么不推荐这样做。我可以知道为什么不建议这样做吗?
是否存在任何安全漏洞os.system(),因此不建议执行Shell命令?