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

如何编写Python函数以直接接收用户输入的Windows文件路径?

解决Python中Windows路径直接传入的语法错误问题

首先明确:你遇到的SyntaxError是Python解析源代码阶段就触发的,不是函数运行时错误。当你写"C:\Users\temp"这种字符串时,Python会把\U当成Unicode转义序列的开头,但后面的sers不是合法的8位十六进制数,直接报错——这时候你的函数根本没机会接收这个参数,代码连运行都没启动。

核心结论

如果用户是直接在代码里写路径字符串(比如脚本、交互式命令行),你没办法绕过Python的语法规则,必须让用户做以下操作之一:

  • 用原始字符串:r"C:\Users\temp"
  • 转义反斜杠:"C:\\Users\\temp"
  • 改用正斜杠:"C:/Users/temp"

这不是函数能解决的问题,因为语法错误发生在函数执行之前。

可行的替代方案

如果想让用户完全不用处理转义,只能让路径不通过源代码字符串传入,比如:

  1. 通过输入函数获取:让用户在运行时输入路径,input()会把用户输入的内容原样当成字符串,不会解析转义:
    def enter_filepath():
        filepath = input("请输入文件路径:")
        print(filepath)  # 用户输入C:\Users\temp,这里会正常输出
    
    enter_filepath()
    
  2. 通过命令行参数传递:用sys.argv获取命令行输入的路径,同样是原样接收:
    import sys
    def enter_filepath(filepath):
        print(filepath)
    
    if __name__ == "__main__":
        enter_filepath(sys.argv[1])
    
    运行时直接输入:python script.py C:\Users\temp,不会报错。
  3. 调用文件选择对话框:用tkinter的文件选择弹窗,用户可视化选择文件,完全不用手动输入路径:
    from tkinter import filedialog, Tk
    
    def enter_filepath():
        root = Tk()
        root.withdraw()  # 隐藏主窗口
        filepath = filedialog.askopenfilename()
        print(filepath)
    
    enter_filepath()
    

为什么pathlib.Path没用?

因为Path是运行时处理路径的工具,但你的问题是源代码解析阶段的语法错误——enter_filepath("C:\Users\temp")这行代码在被Python解析时就已经报错了,根本没机会执行Path相关的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:40:45