Python如何获取系统用户名以访问C:/Users/USERNAME目录下的文件
你之前的两种写法不生效,是因为Python不会自动解析普通字符串中的Windows环境变量占位符%USERNAME%,传入open函数的路径会被原样识别,无法完成变量替换,因此找不到对应路径的文件。
方法1:通过os模块读取环境变量(匹配你期望的%USERNAME%使用逻辑)
你可以通过os模块直接读取USERNAME环境变量再拼接路径,也可以直接用os模块提供的占位符解析接口直接处理带%USERNAME%的路径字符串:
import os # 方式1:手动读取环境变量拼接 username = os.environ.get("USERNAME") file_path = f"C:/Users/{username}/Desktop/data3.txt" with open(file_path, "r") as f: # 此处写文件操作逻辑 content = f.read() # 方式2:直接解析带%VAR%的路径字符串 file_path = os.path.expandvars("C:/Users/%USERNAME%/Desktop/data3.txt") with open(file_path, "r") as f: content = f.read()
方法2:直接获取用户主目录(更简洁,兼容性更好)
不需要手动拼接C:/Users/前缀,使用内置的路径扩展方法直接定位到当前用户的主目录,这种写法同时兼容Windows、macOS、Linux系统:
import os # ~ 在路径中会被自动替换为当前用户主目录 file_path = os.path.expanduser("~/Desktop/data3.txt") with open(file_path, "r") as f: content = f.read()
方法3:使用pathlib(Python 3.4及以上版本推荐写法)
pathlib是Python官方推荐的面向对象路径处理库,写法更简洁易读:
from pathlib import Path # Path.home() 会直接返回当前用户主目录的路径对象 file_path = Path.home() / "Desktop" / "data3.txt" with open(file_path, "r") as f: content = f.read()
关于无导入使用占位符的说明
没有可行的无导入实现方案。环境变量读取、路径占位符解析都需要依赖Python标准库提供的接口实现,Python原生语法不支持自动替换字符串中的系统环境变量占位符。
内容的提问来源于stack exchange,提问作者Ariocodes
相关产品推荐
相关产品推荐

