在 Python 中,环境变量是一种存储全局信息的方法,例如用户名、当前工作目录等。在某些情况下,您可能需要在脚本中使用环境变量,但您可能会遇到一些问题。
2、解决方案
2.1、使用 os.environ 访问环境变量
您可以使用 os.environ 字典来访问环境变量。例如,要获取当前用户名,您可以使用以下代码:
username = os.environ['USERNAME']
2.2、使用 os.path.expandvars 扩展环境变量
当您需要将环境变量用作路径的一部分时,您需要使用 os.path.expandvars() 函数。此函数会将环境变量替换为其值。例如,要创建以下目录:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data
您可以使用以下代码:
path = "C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data"
os.makedirs(os.path.expandvars(path))
2.3、使用 os.path.join() 连接路径
当您需要连接多个路径部分时,您可以使用 os.path.join() 函数。此函数会将路径部分连接在一起,并使用适当的路径分隔符。例如,要连接以下路径部分:
C:\Users
USERNAME
AppData
Roaming
Microsoft
Windows
Start Menu
Programs
Data
您可以使用以下代码:
path = os.path.join("C:\\Users", username, "AppData", "Roaming", "Microsoft", "Windows", "Start Menu", "Programs", "Data")
os.makedirs(path)
2.4、使用 shutil.copyfile() 或 shutil.copytree() 复制文件或目录
当您需要复制文件或目录时,您可以使用 shutil.copyfile() 或 shutil.copytree() 函数。这些函数会将源文件或目录复制到目标位置。例如,要复制以下文件:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data\file.txt
到以下位置:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data\backup\file.txt
您可以使用以下代码:
import shutil
shutil.copyfile("C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data\\file.txt", "C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data\\backup\\file.txt")
要复制以下目录:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data
到以下位置:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data\backup
您可以使用以下代码:
import shutil
shutil.copytree("C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data", "C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data\\backup")
2.5、使用 glob.glob() 获取文件或目录列表
当您需要获取文件或目录列表时,您可以使用 glob.glob() 函数。此函数会返回与指定模式匹配的文件或目录列表。例如,要获取以下目录中的所有文件:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data
您可以使用以下代码:
import glob
files = glob.glob("C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data\\*")
要获取以下目录中的所有子目录:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data
您可以使用以下代码:
import glob
directories = glob.glob("C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data\\*")
2.6、使用 os.remove() 或 os.rmdir() 删除文件或目录
当您需要删除文件或目录时,您可以使用 os.remove() 或 os.rmdir() 函数。这些函数会删除指定的文件或目录。例如,要删除以下文件:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data\file.txt
您可以使用以下代码:
import os
os.remove("C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data\\file.txt")
要删除以下目录:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data
您可以使用以下代码:
import os
os.rmdir("C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data")
2.7、使用 os.walk() 遍历目录
当您需要遍历目录及其子目录时,您可以使用 os.walk() 函数。此函数会生成一个元组列表,其中每个元组包含三个元素:目录的路径、目录中的子目录列表和目录中的文件列表。例如,要遍历以下目录:
C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Data
您可以使用以下代码:
import os
for root, directories, files in os.walk("C:\\Users\\%username%\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Data"):
for directory in directories:
print(os.path.join(root, directory))
for file in files:
print(os.path.join(root, file))