Python与系统环境交互初探

219 阅读3分钟

代码内部可以看作一个封闭的系统,我们的代码不可能一直在自己里面运行,必然和外界有联系,这里讲讲如何和系统进行交互。

1.接收文件的命令行参数

启动Python程序时,可以通过命令行启动,增加后缀,后缀的即为参数,主要有位置参数和命名参数两种。

位置参数

位置参数即附到文件名后面的参数,以sys.args来获取,文件名是参数列表中的0号参数,通常在pycharm中直接启动程序,只有一个文件名参数。

通常启动脚本时总有个文件作为启动的入口,以Python命令启动。

如 python test.py abc 456,显示效果如图:

  image.png

如果想在pycharm中增加参数,需要点击右上角的项目配置,增加parameters和Environment Variables   

image.png

命名参数

通过argparse库来获得带名字的参数,使用方式如下:

image.png

add_argument中第一个参数的-可以是多个,代表不一样的字符。可以设置类型type和默认值default,help代表帮助信息。

这种方法自带-h和—help两个参数,用于显示帮助,显示帮助会将ArgumentParser的description和每个参数的help信息打印出来。

image.png

使用帮助时软件并不会真正运行,哪怕有别的参数在里面。

两种参数是可以同时存在的,位置参数只是分割位置,没有任何解析。

2. 获取系统环境变量

使用os库中的environ来获取系统中的变量,得到的是一个类似于字典的结构,通过get来获取特定变量的值。这类值在linux中通过类似export xxx=123设置,在windows中由高级系统设置->高级->环境变量来设置,用户变量和系统变量都可以,windows的需要重启编译器软件后才能生效。如下图所示的两个就是我在用户和系统变量两处各设置的一个环境变量。

image.png

3. 设置系统环境变量

设置系统环境变量需要通过调用命令注入到文件中,操作os.environ是不行的,这个一经读取值就和系统本身没有太大关系了。

Windows中设置环境变量的命令是setx xxx “123” /m ,后面加/m代表是系统变量,不加/m代表是用户变量,xxx是变量名,123是值,使用已存在的值时使用类似%PATH%的方式,值中间有空格的建议用英文引号包裹,单引号和双引号都可以。如果要对百分号进行远样输出,则替换为^%即可。

Linux直接使用export相关命令即可。注意linux的只在本次登录中有效,重新登录无效,需要写入到启动文件中并重新加载文件。

两种系统的覆盖都是重新设置一遍。

删除系统变量X2

Reg Delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "X2" /f

删除用户变量X2

Reg Delete "HKEY_CURRENT_USER\Environment" /v "X2" /f  

/f代表不需要确认,当变量不存在会提示错误,在os.system执行命令时正常为0,失败为1。

掌握了以上几点,既可以通过传入的参数来判断是执行什么样的程序,也可以通过读写环境变量,与别的程序进行交互操作。