如何在Python中执行Linux test命令并获取退出码且避免异常?
在Python中执行
test命令且不抛出异常的方法 我来帮你解决这个问题~你遇到的报错是因为test是Shell的内置命令,默认情况下subprocess.call()不会启动Shell来执行命令,所以它找不到test这个"可执行文件",才会抛出异常。下面给你两种可行的解决思路:
方法一:通过Shell执行命令
给subprocess.call()加上shell=True参数,让命令在Shell环境中运行,这样就能识别test这个内置命令了,同时也能正常获取退出码:
import subprocess # 执行test命令,通过shell环境运行 exit_code = subprocess.call('test -d a', shell=True) # 退出码0表示目录存在,1表示不存在 print(f"命令退出码:{exit_code}")
方法二:用Python原生方法替代Shell命令
其实Python本身就有判断目录是否存在的内置方法,完全不需要调用Shell的test命令,这种方式更符合Python的编码习惯,而且跨平台性更好:
import os # 判断目录a是否存在 dir_exists = os.path.isdir('a') # 转换成和test命令一致的退出码:存在为0,不存在为1 exit_code = 0 if dir_exists else 1 print(f"等效退出码:{exit_code}")
内容的提问来源于stack exchange,提问作者Dims
相关产品推荐
相关产品推荐

