免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1672 | 回复: 1
打印 上一主题 下一主题

python 调用不同locale 下的 app [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-25 00:03 |只看该作者 |倒序浏览
本帖最后由 oguy99 于 2012-09-25 00:05 编辑

设定有 1.py, 2.py, 3.py, 都是些调用某application, 然后进行相关的验证,比如:
。。。
launchapp('sudo', ['gedit'])
。。。
然后由 all.py 一起执行 1, 2,3

就是不知怎么调用当前locale 下的gedit ?

貌似 locale.setlocale (locale.LC_ALL, 'xx_xx') 不管用??
这个可以在 all.py 里面指定么?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-09-25 11:48 |只看该作者
本帖最后由 linux_c_py_php 于 2012-09-25 12:16 编辑

楼主所说的调用gedit是指启动这个gedit这个编辑器, 是吗? (比如, 通过subprogress等.)

那么你可以预先为子进程设置环境变量, 以便子进程能够继承环境变量, 比如:
  1. os.putenv('LC_ALL', 'en_US.utf8')
  2. subprogress.call(.....)
复制代码
这一点行为和C里的putenv以及环境变量的继承机制有点不同, 是Python自实现的一种工作方式, 也就是putenv不会影响当前进程的环境变量, 但子进程却能够使用这些环境变量.


os.putenv(key, value)
Set the environment variable named key to the string value. Such changes to the environment affect subprocesses started with os.system(), popen() or fork() and execv().

Availability: most flavors of Unix, Windows.

Note
On some platforms, including FreeBSD and Mac OS X, setting environ may cause memory leaks. Refer to the system documentation for putenv.

When putenv() is supported, assignments to items in os.environ are automatically translated into corresponding calls to putenv(); however, calls to putenv() don’t update os.environ, so it is actually preferable to assign to items of os.environ.

这段代码可以测试这个行为:
  1. [liangdong@bb-browser-test00.vm.baidu.com py_project]$ cat main.py
  2. #python3.2
  3. #coding=utf8

  4. import os

  5. #os.putenv('LC_ALL', 'en_US.utf8')
  6. os.environ['LC_ALL'] = 'en_US.utf8'
  7. print(os.getenv('LC_ALL'))
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP