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

Python 3.6处理含撇号文件名的文件打开问题

问题:Python 3.6(CentOS7)中无法打开含撇号的文件名

环境与现有代码

CentOS 7 环境,使用 Python 3.6(受限于虚拟机镜像),现有代码:

with open(filename, "r") as read_file:
    # do stuff

这段代码支持自动关闭文件,能正常处理含空格的文件名,但无法打开含撇号的文件名,报错信息:

Error reading Why Doesn't this Code Work?!.py: near "t": syntax error

已尝试的无效方法

  1. 使用f-string写法,无效果:
with open(f"{filename}", "r") as read_file:
    # do stuff
  1. 尝试给文件名套双引号,完全失效:
with open(f'"{filename}"', "r") as read_file:
    # do stuff

解决方案

首先明确:Python的open()函数本身完全支持含撇号的文件名,你遇到的语法错误根本不是open()导致的,而是**filename变量在传递过程中被错误解析了**——比如通过shell命令拼接时没处理好特殊字符。

具体解决步骤:

  • 如果filename来自命令行参数:直接用sys.argv读取,Python会自动处理带特殊字符的文件名,不需要额外转义。示例:
    import sys
    if len(sys.argv) >= 2:
        filename = sys.argv[1]
        with open(filename, "r") as read_file:
            # 执行你的操作
            content = read_file.read()
            print(content)
    
  • 如果是通过shell执行脚本传递文件名:别用单引号包裹文件名,改用双引号,或者对撇号做转义(写成Why Doesn\'t this Code Work?!.py),避免shell把撇号当成字符串结束符。
  • 绝对不要手动给文件名加引号:open()接收的是纯文件名字符串,你之前加双引号的操作会让Python去寻找带双引号的文件,自然找不到。

只要确保filename变量是正确的原始字符串,Python 3.6就能正常打开含撇号的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:32:38