環(huán)境變量在操作系統(tǒng)中用于指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù)。如臨時(shí)文件夾的位置,某種程序的搜索路徑等。
環(huán)境變量使用變量名=具體值的方式進(jìn)行指定,每個(gè)變量之間使用分號(hào)進(jìn)行分隔。
在Python中,你可以把系統(tǒng)環(huán)境變量當(dāng)做一個(gè)字典來操作。環(huán)境變量的變量名稱即為字典的鍵(key),而對(duì)應(yīng)的鍵值就是對(duì)應(yīng)的環(huán)境變量的值。
我們可以使用Python中os模塊中的environ對(duì)系統(tǒng)變量進(jìn)行相關(guān)操作。
下面這個(gè)例子用于輸出所有的系統(tǒng)變量信息
import os
print(os.environ)
輸出結(jié)果如下:
environ({'ALLUSERSPROFILE': 'C://ProgramData', 'APPDATA': 'C://Users//Kinglong//AppData//Roaming', 'COMMONPROGRAMFILES': 'C://Program Files//Common Files', 'COMMONPROGRAMFILES(X86)': 'C://Program Files (x86)//Common Files', 'COMMONPROGRAMW6432': 'C://Program Files//Common Files', 'COMSPEC': 'C://Windows//system32//cmd.exe', 'DRIVERDATA': 'C://Windows//System32//Drivers//DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOME': 'C://Users//Kinglong', 'HOMEDRIVE': 'C:', 'HOMEPATH': '//Users//Kinglong', 'LOCALAPPDATA': 'C://Users//Kinglong//AppData//Local', 'NUMBER_OF_PROCESSORS': '8', 'NUTSUFFIX': '1', 'NUT_SUFFIXED_SEARCHING': '1', 'ONEDRIVE': 'D://onedrive', 'OS': 'Windows_NT', 'PATH': 'C://Windows//system32;C://Windows;C://Windows//System32//Wbem;C://Windows//System32//WindowsPowerShell//v1.0//;C://Windows//System32//OpenSSH//;C://Program Files (x86)//Microsoft SQL Server//100//Tools//Binn//;C://Program Files//Microsoft SQL Server//100//Tools//Binn//;C://Program Files//Microsoft SQL Server//100//DTS//Binn//;C://Program Files (x86)//Microsoft SQL Server//100//Tools//Binn//VSShell//Common7//IDE//;C://Program Files (x86)//Microsoft Visual Studio 9.0//Common7//IDE//PrivateAssemblies//;C://Program Files (x86)//Microsoft SQL Server//100//DTS//Binn//;C://Program Files//Microsoft SQL Server//130//Tools//Binn//;C://Program Files//Microsoft SQL Server//Client SDK//ODBC//170//Tools//Binn//;C://Program Files//dotnet//;C://Program Files (x86)//Rational//common;C://Users//Kinglong//AppData//Local//Programs//Python//Python310//Scripts//;C://Users//Kinglong//AppData//Local//Programs//Python//Python310//;C://Users//Kinglong//AppData//Local//Microsoft//WindowsApps;C://Users//Kinglong//.dotnet//tools;C://Program Files//JetBrains//PyCharm 2022.1.3//bin;', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 140 Stepping 2, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8c02', 'PROGRAMDATA': 'C://ProgramData', 'PROGRAMFILES': 'C://Program Files', 'PROGRAMFILES(X86)': 'C://Program Files (x86)', 'PROGRAMW6432': 'C://Program Files', 'PSMODULEPATH': 'C://Program Files//WindowsPowerShell//Modules;C://Windows//system32//WindowsPowerShell//v1.0//Modules', 'PUBLIC': 'C://Users//Public', 'PYCHARM': 'C://Program Files//JetBrains//PyCharm 2022.1.3//bin;', 'RATL_RTHOME': 'C://Program Files (x86)//Rational//Rational Test', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C://Windows', 'TEMP': 'C://Users//Kinglong//AppData//Local//Temp', 'TMP': 'C://Users//Kinglong//AppData//Local//Temp', 'USERNAME': 'Kinglong', 'USERPROFILE': 'C://Users//Kinglong', 'WINDIR': 'C://Windows', 'ZES_ENABLE_SYSMAN': '1'})
可以看到這個(gè)輸出結(jié)果很長,這跟操作系統(tǒng)和安裝軟件的內(nèi)容的具體設(shè)置有關(guān),每臺(tái)電腦的信息不一定相同。
上面這個(gè)結(jié)果在一行中輸出所有內(nèi)容,顯得有些凌亂,如果想讓其按照鍵值的方式顯示內(nèi)容,你可以使用一個(gè)循環(huán)來處理。
import os
for k, v in os.inviron.items():
print(f'{k}={v}')
輸出結(jié)果如下:
ALLUSERSPROFILE=C:/ProgramData
APPDATA=C:/Users/Kinglong/AppData/Roaming
COMMONPROGRAMFILES=C:/Program Files/Common Files
COMMONPROGRAMFILES(X86)=C:/Program Files (x86)/Common Files
COMMONPROGRAMW6432=C:/Program Files/Common Files
COMSPEC=C:/Windows/system32/cmd.exe
DRIVERDATA=C:/Windows/System32/Drivers/DriverData
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING=Default
HOME=C:/Users/Kinglong
HOMEDRIVE=C:
HOMEPATH=/Users/Kinglong
LOCALAPPDATA=C:/Users/Kinglong/AppData/Local
NUMBER_OF_PROCESSORS=8
NUTSUFFIX=1
NUT_SUFFIXED_SEARCHING=1
ONEDRIVE=D:/onedrive
OS=Windows_NT
PATH=C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Windows/System32/OpenSSH/;C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/VSShell/Common7/IDE/;C:/Program Files (x86)/Microsoft Visual Studio 9.0/Common7/IDE/PrivateAssemblies/;C:/Program Files (x86)/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files/Microsoft SQL Server/130/Tools/Binn/;C:/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/;C:/Program Files/dotnet/;C:/Program Files (x86)/Rational/common;C:/Users/Kinglong/AppData/Local/Programs/Python/Python310/Scripts/;C:/Users/Kinglong/AppData/Local/Programs/Python/Python310/;C:/Users/Kinglong/AppData/Local/Microsoft/WindowsApps;C:/Users/Kinglong/.dotnet/tools;C:/Program Files/JetBrains/PyCharm 2022.1.3/bin;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 140 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=8c02
PROGRAMDATA=C:/ProgramData
PROGRAMFILES=C:/Program Files
PROGRAMFILES(X86)=C:/Program Files (x86)
PROGRAMW6432=C:/Program Files
PSMODULEPATH=C:/Program Files/WindowsPowerShell/Modules;C:/Windows/system32/WindowsPowerShell/v1.0/Modules
PUBLIC=C:/Users/Public
PYCHARM=C:/Program Files/JetBrains/PyCharm 2022.1.3/bin;
RATL_RTHOME=C:/Program Files (x86)/Rational/Rational Test
SESSIONNAME=Console
SYSTEMDRIVE=C:
SYSTEMROOT=C:/Windows
TEMP=C:/Users/Kinglong/AppData/Local/Temp
TMP=C:/Users/Kinglong/AppData/Local/Temp
USERNAME=Kinglong
USERPROFILE=C:/Users/Kinglong
WINDIR=C:/Windows
ZES_ENABLE_SYSMAN=1
這個(gè)結(jié)果要比上一個(gè)清晰的多,閱讀比較方便。
有時(shí)我們需要讀取特定變量的值,下面這段程序可以實(shí)現(xiàn)這個(gè)要求。
import os
temp_dir = os.environ['temp']
path = os.environ['path']
print(f'臨時(shí)文件夾:{temp_dir},/r/n路徑:{path}')
輸出結(jié)果如下:
臨時(shí)文件夾:C:/Users/Kinglong/AppData/Local/Temp,
路徑:C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0/;C:/Windows/System32/OpenSSH/;C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/Tools/Binn/;C:/Program Files/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/VSShell/Common7/IDE/;C:/Program Files (x86)/Microsoft Visual Studio 9.0/Common7/IDE/PrivateAssemblies/;C:/Program Files (x86)/Microsoft SQL Server/100/DTS/Binn/;C:/Program Files/Microsoft SQL Server/130/Tools/Binn/;C:/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/;C:/Program Files/dotnet/;C:/Program Files (x86)/Rational/common;C:/Users/Kinglong/AppData/Local/Programs/Python/Python310/Scripts/;C:/Users/Kinglong/AppData/Local/Programs/Python/Python310/;C:/Users/Kinglong/AppData/Local/Microsoft/WindowsApps;C:/Users/Kinglong/.dotnet/tools;C:/Program Files/JetBrains/PyCharm 2022.1.3/bin;
上面的代碼實(shí)現(xiàn)了輸出了系統(tǒng)的臨時(shí)存儲(chǔ)目錄和程序運(yùn)行的搜索路徑。
這樣就可以根據(jù)用戶的需要來讀取指定的系統(tǒng)變量值。
上面的程序?qū)崿F(xiàn)了讀取指定系統(tǒng)變量的值,但如果指定的系統(tǒng)變量不存在時(shí),將會(huì)引發(fā)KeyError錯(cuò)誤,為了較好的處理這個(gè)問題,我們可以在操作指定系統(tǒng)變量之前先判斷一下該系統(tǒng)變量是否存在,具體操作方法如下:
import os
what_vars = [ 'temp', 'VeVb.com']
for v in what_vars:
if v in os.environ:
print(f'{v} = {os.environ[v]}')
else:
print(f'{v}在系統(tǒng)變量中不存在。')
輸出結(jié)果如下:
temp = C:/Users/Kinglong/AppData/Local/Temp
VeVb.com在系統(tǒng)變量中不存在。
使用os.environ.get()方法也可以避免出現(xiàn)KeyError錯(cuò)誤。當(dāng)指定的環(huán)境變量不存在時(shí),os.environ.get()方法將返回None值。該方法也可以指定一個(gè)默認(rèn)值,當(dāng)指定的環(huán)境變量不存在時(shí)將返回指定的默認(rèn)值。
import os
what_var1, what_var2, what_var3 = 'temp', 'syspath', 'java'
print(os.environ.get(what_var1))
print(os.environ.get(what_var2))
print(os.environ.get(what_var3, 'java_home'))
輸出結(jié)果:
C:/Users/Kinglong/AppData/Local/Temp
None
java_home
上面程序中,what_var2和what_var3指定的環(huán)境變量是不存在的,所以在使用what_var2輸出指定環(huán)境變量的值時(shí),其輸出了None,而我們給what_var3指定了默認(rèn)值,則其輸出了其指定的默認(rèn)值"java_home"。
在Python中可以使用下面的方法設(shè)置環(huán)境變量。
import os
print(f"修改前:{os.environ.get('TMP')}")
os.environ['tmp'] = f'D:/Files'
print(f"修改后:{os.environ.get('TMP')}")
輸出結(jié)果:
修改前:C:/Users/Kinglong/AppData/Local/Temp
修改后:D:/Files
要注意使用這種方式不能真正的修改系統(tǒng)的環(huán)境變量值,它只是修改了Python當(dāng)前解釋器運(yùn)行中的值。同時(shí),在使用該方法修改系統(tǒng)變量的值時(shí),該值必須使用字符串的形式給出,即使是數(shù)值也需要指定為字符串的格式。
新聞熱點(diǎn)
疑難解答
圖片精選