企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## os.system和os.popen尽量不要使用,推荐使用subprocess ### <del>os.system() `os.system() -> exit_status` 返回为命名退出`状态码`,这些输出无法捕获;如果有屏幕输出,则直接输出到终端 --- ### <del>os.popen() os.popen() -> file_objec 只能捕捉到标准输出,捕捉不到错误输出 os.popen2() -> file_objec(stdin,stdout) 返回标准输入和标准输出 ```python >>> si, so = os.popen2('sort') >>> si.write('12\n') >>> si.write('10\n') >>> si.write('14\n') >>> si.close() >>> so.read() '10\n12\n14\n' ``` os.popen3() -> file_objec(stdin, stdout,stderr) 返回标准输入和标准输出 os.popen4() -> file_objec(stdin,stdout_stderr) 返回标准输入和标准输出 新版本已经禁用os.popen(),建议使用subprocess ### subprocess subprocess.call('ls') -> exit_status 返回为命名退出状态码,如果有屏幕输出,则直接输出到终端,这些输出无法捕获 当命令含有空格时,需使用`shell=True`,等于使用call(['/bin/sh', '-c', args[0], args[1], ...]) 否则误把-l当成文件;若出错,会抛出bash异常 subprocess.call('ls -l', shell=True) 命令和选项可组成`列表` subprocess.call(['ls', '-l']) subprocess.check_call()若出错,python异常