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

Python读取目录txt文件报FileNotFoundError但文件实际存在如何解决

问题原因

根本原因

  1. os.listdir()仅返回目标目录下的文件名/目录名,不包含父级路径信息。你在第二个脚本中直接将获取到的文件名file传入open()函数时,Python会以脚本执行时的当前工作目录为基准查找文件,只要你运行脚本时的工作目录不是你定义的C:\Users\Username\OneDrive\Desktop\python,就会出现文件存在但找不到的报错。
  2. 你删除txt文件后脚本无报错退出,是因为if file.endswith(".txt")判断不通过,不会执行后续的open()逻辑,自然不会触发报错,这个表现和问题原因完全吻合。
    另外你现有代码里还有个隐性语法问题:char_list列表中'PDU A4''a'位置漏了逗号,会被Python识别为字符串拼接,后续匹配规则会出错。

解决方法

读取文件时和你第一个PDF转换脚本的逻辑保持一致,拼接完整的文件路径再打开即可,修改后代码如下:

import os
import time
#import sys
import mysql.connector
from collections import deque
from itertools import groupby


directory = 'C:\\Users\\Username\\OneDrive\\Desktop\\python'
for file in os.listdir(directory):
    if file.endswith(".txt"): #Skip non-TXT files
        # 拼接完整路径再打开
        with open(os.path.join(directory, file), 'r') as f:
            nameList = [line.strip() for line in f]
            transferlist = nameList
            char_list=['UPS A','PDU A1','PDU B1','CRAC 03','PDU A2','CRAC 05','UPS B',
            'PDU B2','CRAC 06','CRAC 07','PDU A4','DC CNC','ATS 1','ATS 2','CRAC 02','CRAC 04','CRAC 01',
            'CRAC 09','CRAC 08','CRAC 10','CRAC 11','ATS','DC A1','DC B1','PDU A4','a','b','c','d','e',
            'f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
            'w','x','y','z','/',':']
            transferlist2=[ele for ele in transferlist if all(ch not in ele for ch in char_list)]

可选优化建议

  • 所有文件操作统一使用os.path.join()拼接路径,避免手动拼接字符串时出现斜杠遗漏、写错的问题,你第一个脚本里写txt文件的逻辑也可以替换为这种写法,兼容性更好。
  • 如果需要排查路径问题,可以在打开文件前打印完整路径确认:print("当前处理文件路径:", os.path.join(directory, file))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:48:03