環境變量在操作系統中用于指定操作系統運行環境的一些參數。如臨時文件夾的位置,某種程序的搜索路徑等。
環境變量使用變量名=具體值的方式進行指定,每個變量之間使用分號進行分隔。
在Python中,你可以把系統環境變量當做一個字典來操作。環境變量的變量名稱即為字典的鍵(key),而對應的鍵值就是對應的環境變量的值。
我們可以使用Python中os模塊中的environ對系統變量進行相關操作。
下面這個例子用于輸出所有的系統變量信息
import os
print(os.environ)
輸出結果如下:
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'})
可以看到這個輸出結果很長,這跟操作系統和安裝軟件的內容的具體設置有關,每臺電腦的信息不一定相同。
上面這個結果在一行中輸出所有內容,顯得有些凌亂,如果想讓其按照鍵值的方式顯示內容,你可以使用一個循環來處理。
import os
for k, v in os.inviron.items():
print(f'{k}={v}')
輸出結果如下:
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
這個結果要比上一個清晰的多,閱讀比較方便。
有時我們需要讀取特定變量的值,下面這段程序可以實現這個要求。
import os
temp_dir = os.environ['temp']
path = os.environ['path']
print(f'臨時文件夾:{temp_dir},/r/n路徑:{path}')
輸出結果如下:
臨時文件夾: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;
上面的代碼實現了輸出了系統的臨時存儲目錄和程序運行的搜索路徑。
這樣就可以根據用戶的需要來讀取指定的系統變量值。
上面的程序實現了讀取指定系統變量的值,但如果指定的系統變量不存在時,將會引發KeyError錯誤,為了較好的處理這個問題,我們可以在操作指定系統變量之前先判斷一下該系統變量是否存在,具體操作方法如下:
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}在系統變量中不存在。')
輸出結果如下:
temp = C:/Users/Kinglong/AppData/Local/Temp
VeVb.com在系統變量中不存在。
使用os.environ.get()方法也可以避免出現KeyError錯誤。當指定的環境變量不存在時,os.environ.get()方法將返回None值。該方法也可以指定一個默認值,當指定的環境變量不存在時將返回指定的默認值。
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'))
輸出結果:
C:/Users/Kinglong/AppData/Local/Temp
None
java_home
上面程序中,what_var2和what_var3指定的環境變量是不存在的,所以在使用what_var2輸出指定環境變量的值時,其輸出了None,而我們給what_var3指定了默認值,則其輸出了其指定的默認值"java_home"。
在Python中可以使用下面的方法設置環境變量。
import os
print(f"修改前:{os.environ.get('TMP')}")
os.environ['tmp'] = f'D:/Files'
print(f"修改后:{os.environ.get('TMP')}")
輸出結果:
修改前:C:/Users/Kinglong/AppData/Local/Temp
修改后:D:/Files
要注意使用這種方式不能真正的修改系統的環境變量值,它只是修改了Python當前解釋器運行中的值。同時,在使用該方法修改系統變量的值時,該值必須使用字符串的形式給出,即使是數值也需要指定為字符串的格式。
新聞熱點
疑難解答