本文讲解如何使用
python
的f-string或format方法,将系统当前登录用户名自动插入到文件路径中,解决变量未被正确解析导致文件名显示为字面量{username}的问题。
在Python中,若直接在字符串中写入{username}(如 'Outputs_{username}.xlsx'),该大括号会被视为普通字符,而非变量占位符——这是因为
普通字符串不支持运行时变量插值
。只有使用格式化字符串(如f-string、.format() 或 % 格式化)时,变量值才会被实际替换。
✅ 正确做法是使用
f-string(推荐)
:
在字符串前加 f 前缀,并将变量名置于 {} 中。注意:当路径中含反斜杠 时,建议使用原始字符串(r 前缀)避免转义冲突。二者可结合使用为 rf"":
⚠️ 注意事项:
不要混用 r 和 f 的顺序(必须是 rf,而非 fr —— 虽然CPython目前兼容 fr,但 rf 是PEP 498明确推荐的标准写法);
若路径中需兼容不同
操作系统
,建议改用 pathlib 构建路径,提升可移植性:
❌ 错误示例(变量未展开):
? 补充:除f-string外,也可使用 .format() 方法(兼容旧版Python):
Trae win
Trae Windows 官方版本现已全面支持 Win10 和 Win11 系统(64位)。国内开发者可直接访问 Trae 中文官网(trae.cn 或 trae.com.cn),一键下载官方正版 .exe 安装包,享受国内直连的高速稳定体验。安装过程极其简便,双击即可运行,并支持一键无缝导入 VS Code 或 Cursor 的原有主题、快捷键及插件配置。登录支持手机号、微信或稀土掘金账号。内置免费的豆包与 DeepSeek 等顶级大模型,让你开箱即用,轻松开启高效的 AI 智能编程之旅。
下载
立即学习
“
Python免费学习笔记(深入)
”;
注意此处需双写反斜杠 \ 以在普通字符串中表示单个 ,而f-string+raw组合(rf"")可避免此繁琐写法。
总结:动态生成带用户名的文件名,核心在于
选择支持变量插值的字符串格式化方式
,并合理处理Windows路径中的反斜杠。f-string + raw 字符串(rf"")是现代Python中最简洁、安全且可读性强的解决方案。
import getpass
username = getpass.getuser()
output_excel_file = rf"C:Users
ameOneDriveOutputsOutputs_{username}.xlsx"
print(output_excel_file) # 示例输出:C:Users
ameOneDriveOutputsOutputs_tomsmith.xlsxfrom pathlib import Path
import getpass
username = getpass.getuser()
base_dir = Path(r"C:Users
ameOneDriveOutputs")
output_excel_file = base_dir / f"Outputs_{username}.xlsx"output_excel_file = "C:Users
ameOneDriveOutputsOutputs_{username}.xlsx" # {username} 是纯文本
output_excel_file = r"C:Users
ameOneDriveOutputsOutputs_{username}.xlsx" # 同样无效:r-string 禁用所有转义和插值output_excel_file = "C:\Users\name\OneDrive\Outputs\Outputs_{}.xlsx".format(username)