如何在Python中将当前登录用户名动态添加到输出文件名中

11次阅读

如何在Python中将当前登录用户名动态添加到输出文件名中

本文讲解如何使用python的f-Stringformat方法,将系统当前登录用户名自动插入到文件路径中,解决变量未被正确解析导致文件名显示为字面量{username}的问题。

python中,若直接在字符串中写入{username}(如 ‘Outputs_{username}.xlsx’),该大括号会被视为普通字符,而非变量占位符——这是因为普通字符串不支持运行时变量插值。只有使用格式化字符串(如f-string、.format() 或 % 格式化)时,变量值才会被实际替换。

✅ 正确做法是使用 f-string(推荐)
在字符串前加 f 前缀,并将变量名置于 {} 中。注意:当路径中含反斜杠 时,建议使用原始字符串(r 前缀)避免转义冲突。二者可结合使用为 rf””:

import getpass  username = getpass.getuser() output_excel_file = rf"C:UsersnameOneDriveOutputsOutputs_{username}.xlsx" print(output_excel_file)  # 示例输出:C:UsersnameOneDriveOutputsOutputs_tomsmith.xlsx

⚠️ 注意事项:

  • 不要混用 r 和 f 的顺序(必须是 rf,而非 fr —— 虽然CPython目前兼容 fr,但 rf 是PEP 498明确推荐的标准写法);
  • 若路径中需兼容不同操作系统,建议改用 pathlib 构建路径,提升可移植性:
from pathlib import Path import getpass  username = getpass.getuser() base_dir = Path(r"C:UsersnameOneDriveOutputs") output_excel_file = base_dir / f"Outputs_{username}.xlsx"

❌ 错误示例(变量未展开):

output_excel_file = "C:UsersnameOneDriveOutputsOutputs_{username}.xlsx"  # {username} 是纯文本 output_excel_file = r"C:UsersnameOneDriveOutputsOutputs_{username}.xlsx"   # 同样无效:r-string 禁用所有转义和插值

? 补充:除f-string外,也可使用 .format() 方法(兼容旧版Python):

立即学习Python免费学习笔记(深入)”;

output_excel_file = "C:\Users\name\OneDrive\Outputs\Outputs_{}.xlsx".format(username)

注意此处需双写反斜杠 \ 以在普通字符串中表示单个 ,而f-string+raw组合(rf””)可避免此繁琐写法。

总结:动态生成带用户名的文件名,核心在于选择支持变量插值的字符串格式化方式,并合理处理windows路径中的反斜杠。f-string + raw 字符串(rf””)是现代Python中最简洁、安全且可读性强的解决方案。

text=ZqhQzanResources