用subprocess.call()执行激活arcpy虚拟环境脚本时报错File "D:\Program Files\ArcGIS\Pro\bin\Python\Scripts\activate.bat", line 1 @REM @ symbols in this file indicate that output should not be printed.,如何解决这个错误
时间: 2023-07-21 20:44:57 浏览: 83
使用python执行shell脚本 并动态传参 及subprocess的使用详解
这个错误是由于Windows的activate.bat脚本中包含了@REM符号,它被认为是注释,不应该被打印出来,但是`subprocess.call()`函数默认情况下会将所有输出打印到终端,因此会导致这个错误。
解决此问题的方法是,在调用`subprocess.call()`函数时,将`stdout`参数设置为`subprocess.DEVNULL`,这将会将所有输出重定向到空设备,从而避免输出到终端。
例如:
```python
import subprocess
python_path = "C:\\Python27\\ArcGISx6410.6\\python.exe"
activate_script_path = "D:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\Scripts\\activate.bat"
subprocess.call([python_path, activate_script_path], stdout=subprocess.DEVNULL)
```
这将会执行activate.bat脚本,但是不会将任何输出打印到终端。
阅读全文