python 调用 shell 时 设置环境变量
2016-09-07 17:48
603 查看
python调用shell 不设置shell的环境变量时,对于中文等特殊字符会处理失败,这时需要设置环境变量
调用shell,这里使用 subprocess 模块 来调用shell
注意:下文中的“
##方法1:
在shell命令的字符串前,加上
##方法2:
调用subprocess.call函数时,增加
##方法3:
设置python的环境变量;
python的环境变量在
在调用subprocess模块前,调用下面的代码,那么subprocess执行的shell命令的环境变量里面就会增加下面的变量:LANG, LC_ALL
###验证方式:
调用shell,这里使用 subprocess 模块 来调用shell
注意:下文中的“
your shell command” 代表你你自己的shell命令,比如 “
ls”
##方法1:
在shell命令的字符串前,加上
"LANG=en_US.UTF-8; export LANG; LC_ALL=en_US.UTF-8; export LC_AL; "
shell_command = "LANG=en_US.UTF-8; export LANG; LC_ALL=en_US.UTF-8; export LC_ALL; your shell command" subprocess.call(shell_command, shell=True)
##方法2:
调用subprocess.call函数时,增加
env参数
subprocess.call("your shell command", env={"LANG": "en_US.UTF-8", "LC_ALL": "en_US.UTF-8"}, shell=True)
##方法3:
设置python的环境变量;
python的环境变量在
os.environ(是个字典)里,可以修改此字典,但是官方文档上说有可能会造成内存泄露
os.putenv(varname, value)可以设置环境变量,注意:调用此参数不会影响
os.environ,但是会让 subprocess模块生效
在调用subprocess模块前,调用下面的代码,那么subprocess执行的shell命令的环境变量里面就会增加下面的变量:LANG, LC_ALL
os.putenv("LANG", "en_US.UTF-8") os.putenv("LC_ALL", "en_US.UTF-8")
###验证方式:
shell_command = "env" # 输出shell当前的环境变量
subprocess.call(shell_command, shell=True) # 输出的环境变量里面 没有 LANG LC_ALL
os.putenv("LANG", "en_US.UTF-8") os.putenv("LC_ALL", "en_US.UTF-8")
subprocess.call(shell_command, shell=True) # 输出的环境变量里面 包含了 LANG LC_ALL
相关文章推荐
- Python中调用设置环境变量的bat
- Windows系统python环境变量的设置
- CRONTAB调用备份脚本时要注意环境变量的设置
- Python_Python环境变量PYTHONPATH设置
- python调用shell,python与shell间变量交互
- 在Windows系统下设置Python的环境变量,以及安装BeautifulSoup
- shell环境变量的设置
- CRONTAB调用备份脚本时要注意环境变量的设置
- 转:linux设置python环境变量
- 【PYTHON】Python 在Windows下 环境变量设置
- linux设置python环境变量
- Ubuntu 设置shell环境变量
- 转:linux设置python环境变量
- export 在shell脚本中设置环境变量失效
- Python环境变量设置
- 设置linux环境变量使得任何目录都可以调用mysql客户
- CRONTAB调用备份脚本时要注意环境变量的设置
- Linux下设置时区(通过shell设置和程序中设置)及程序中设置环境变量
- 由于系统环境变量的设置导致调用链接器出错
- Python环境变量PYTHONPATH设置和easy_install简单使用