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

Python中使用input()获取文件路径时如何实现原始字符串效果?

问题描述

我在PyCharm(Python 3.9版本)中编写可读写本地任意文档的脚本,使用input()获取文件路径时,路径中的反斜杠解析出现问题。

代码示例

global file
    
def start():
        global file
        print("text file:")
        file = input()
        print("type:")
        m = input()
        if m == 'r':
           read()
    
        def read():
            with open(file, 'a+') as f:
                f.seek(0)
                print(f.read())

控制台操作流程

script >> text file:
me >> "C:\Users\mylan\Downloads\test.txt"
script >> type: 
me >> r

报错信息

OSError: [Errno 22] Invalid argument: '"C:\\Users\\mylan\\Downloads\\test.txt"'

已知硬编码路径时添加r前缀可解决问题,但无法动态获取路径,请问如何用input()实现类似r前缀的原始字符串效果?


解决方案

1. 移除输入路径的引号

你输入的路径包含前后双引号,这是报错的核心原因——input()会将引号作为路径的一部分,而系统中实际不存在带引号的文件路径。输入时直接写C:\Users\mylan\Downloads\test.txt即可,不要加引号。

2. 处理转义字符

如果输入的反斜杠被自动解析为转义符,可通过以下方式还原原始路径:

  • 方法一:解码原始转义
    使用raw_unicode_escape编码格式解码输入字符串,还原成原始路径:
file = input().encode('raw_unicode_escape').decode()
  • 方法二:替换路径分隔符
    将输入中的单个反斜杠替换为双反斜杠,或者直接换成正斜杠(Python支持正斜杠作为跨平台路径分隔符):
# 替换为双反斜杠
file = input().replace('\\', '\\\\')
# 替换为正斜杠
file = input().replace('\\', '/')

3. 用pathlib规范处理路径(推荐)

Python内置的pathlib模块可自动处理不同系统的路径分隔符,同时兼容用户可能输入的引号:

from pathlib import Path

def start():
    print("text file:")
    # 去除输入前后可能存在的引号,再转为Path对象
    file_path = Path(input().strip('"'))
    print("type:")
    m = input()
    if m == 'r':
        read(file_path)

def read(file_path):
    with open(file_path, 'a+') as f:
        f.seek(0)
        print(f.read())

Path对象会自动处理路径中的转义和分隔符问题,无需手动处理反斜杠。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:18:20