subprocess的使用
在windows
下,如果我们想在不同的路径下,先执行一个脚本,后又要执行一个exe跑程序,然后又要对exe
结果进行分析,在这种情况下,如果手动一个一个执行,肯定是可以的,但是违背了智能化精神,智能化就是要求批次处理,智能化顺序执行,因此,尽可能减少手工劳动完成想要的任务是code
的一个愿景。那么对于上述的场景,能不能实现呢?答案是可以的。在这里就用到了python
里的subprocess
库。
其实,这里有几种场景:
- 脚本的执行,通常使用
python xxx.py
, 这种场景要注意,有的必须要在脚本目录执行,因为在脚本里可能涉及路径问题,搞不好,你在cmd
下执行脚本,会爆出XXX not found
的错误,因此,在windows
下执行脚本,也要跟linux
下一样,路径要搞对。 - 可执行文件的运行,通常是在文件路径,直接双击,就可以跑起来,也要注意路径问题。
可能还有其他的场景,不过以上的基本够用了。
python subprocess
这个库就能够很好的把上述的场景覆盖,然后得到你想要的结果。其实很简单,语法如下:
subprocess.check_call([sys.executable, script.py], cwd=working_dir)
对应python XXX.py
的场景subprocess.check_call([exe_path + "xxx.exe"], cwd=exe_dir)
对应双击执行exe
的场景
在很多时候,可能不止执行一次程序,会在不同的路径,将上述的过程执行一遍,那么就在外面加for
循环就好了。