免费注册 查看新帖 |

Chinaunix

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

获得系统的path变量,被"'搞糊涂了....大虾来指点下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-15 21:48 |只看该作者 |倒序浏览
import os

x=os.system("wmic ENVIRONMENT where name='path' and username='<system>' get UserName,VariableValue")

print x


这里为啥无法只获得系统变量中的path呢?总提示系统找不到指定的文件。1




这里wmic在Windows下cmd用wmic ENVIRONMENT where "name='path' and username='<system>'" get UserName,VariableValue
可以得到正确结果,但是py的os.system里就不行...谁来指点下啊

论坛徽章:
0
2 [报告]
发表于 2009-10-15 22:07 |只看该作者
学习了
原来还有这么个命令

论坛徽章:
0
3 [报告]
发表于 2009-10-15 22:11 |只看该作者
  1. os.popen('wmic ENVIRONMENT where "name=\'path\' and username=\'<system>\'" get UserName,VariableValue').read()
复制代码

你的wmic命令写的不对
其次不应该用os.system应该用popen

论坛徽章:
0
4 [报告]
发表于 2009-10-15 22:18 |只看该作者
原帖由 bleem1998 于 2009-10-15 22:11 发表
os.popen('wmic ENVIRONMENT where "name=\'path\' and username=\'\'" get UserName,VariableValue').read()

你的wmic命令写的不对
其次不应该用os.system应该用popen




多谢指点

我是新手,刚学几天

ps

如果用os.system 后面不接 .read()方法

为何也能有值返回,这样返回的是什么呢

[ 本帖最后由 cciikk 于 2009-10-15 22:20 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-10-15 22:29 |只看该作者
system不接read虽然你能看到它打印出来
但是你只能用眼睛看看而已(如果你只是想看看那也行)
要是你想把返回值保存到变量里进行处理
那system就不行了
所以最好是用popen比较通用
用popen才能捕获到wmic的输出

BTW
wmic我还是第一次看到
今天来这里守夜确实没白守啊

论坛徽章:
0
6 [报告]
发表于 2009-10-15 22:47 |只看该作者
原帖由 bleem1998 于 2009-10-15 22:29 发表
system不接read虽然你能看到它打印出来
但是你只能用眼睛看看而已(如果你只是想看看那也行)
要是你想把返回值保存到变量里进行处理
那system就不行了
所以最好是用popen比较通用
用popen才能捕获到wmic的 ...


原来是这样啊....

x=os.popen('wmic ENVIRONMENT where "name=\'path\' and username=\'<system>\'" get VariableValue').read()

如果我只想得到"变量" 的"值"

这个x字串 还带有 VariableValue 字符...这种情况怎么避免呢?

我想让x仅仅是变量值的值.....

论坛徽章:
0
7 [报告]
发表于 2009-10-15 23:01 |只看该作者
那就用些字符串处理函数来搞

  1. x = x.split('VariableValue')[1]
  2. x = x.strip().split(';')
复制代码

最后得到了一个干净的列表

论坛徽章:
0
8 [报告]
发表于 2009-10-15 23:02 |只看该作者
原帖由 bleem1998 于 2009-10-15 23:01 发表
那就用些字符串处理函数来搞

x = x.split('VariableValue')[1]
x = x.strip().split(';')

最后得到了一个干净的列表


哦...切割..前几天看了,现在又忘了..多谢...
我再去看一遍教程...

论坛徽章:
0
9 [报告]
发表于 2009-10-15 23:06 |只看该作者
友情提醒
如果你是想得到系统的PATH
这样做更简单

  1. import os
  2. os.environ['PATH']
复制代码

论坛徽章:
0
10 [报告]
发表于 2009-10-16 07:23 |只看该作者
原帖由 bleem1998 于 2009-10-15 23:06 发表
友情提醒
如果你是想得到系统的PATH
这样做更简单

import os
os.environ['PATH']


多谢,我是想在不重启系统的情况下强制刷新环境变量的path值而已

因为我们这有款国产软件一直有个问题,用段时间就会让环境变量的path失效,必须手动到环境变量将path剪切出来保存住,再打开粘贴回去才能继续用...那软件公司项目验收完就说该行不做这套软件了...现在也不给修正bug...

目前想法是用wimc将path值读出来存住,然后写个0给path保存一次,再将原先读取出来的值写回去..再保存....


不知道os.environ的写值操作能让Windows不重启就刷新环境变量不?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP