解决 Python 中的环境变量问题

在 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))