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

使用变量路径调用open()打开文件失败,直接写入路径可正常运行

问题分析与解决

核心问题

程序崩溃(退出码0xC0000409)的根源是拖拽获取的路径被错误添加了单引号。从输出可见,path变量的值是'C:/Users/ahmet/OneDrive/Masaüstü/G-code Fix/bum.txt'——这个字符串包含首尾单引号,而实际文件路径并不带这些引号,用带引号的路径调用open()时,系统找不到对应文件,直接触发崩溃。

导致该问题的代码是:

path = str(files).replace('[','').replace(']','')

files是包含文件路径的列表,转成字符串后会保留元素的单引号格式(比如["真实路径"]转成字符串后是"'真实路径'"),你仅去掉了括号,却保留了单引号,最终得到的是带无效引号的路径。

修复方案

直接从files列表中提取路径,无需通过字符串转换处理:

修改后的dropEvent方法

def dropEvent(self, event):
    files = [u.toLocalFile() for u in event.mimeData().urls()]
    # 拖拽单个文件时取第一个元素,多文件场景可自行遍历处理
    if not files:
        return
    path = files[0]
    print(path)
    # 用with语句自动管理文件句柄,无需手动关闭
    with open(path, 'r', encoding='utf-8') as oldcode:
        b = oldcode.readlines()
        c = [x.replace('\n','') for x in b]
        print(c)
        print(len(c))
        for i in range(len(c)):
            if c[i] == 'xd':
                c[i] = 'lolz'

额外优化点

  1. 增加空列表判断:若拖拽空内容,直接返回避免报错
  2. 使用with语句操作文件,无需手动调用close()(原代码中oldcode.close还缺少括号,即使执行也无法真正关闭文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:36:20