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

使用pandas读取txt文件报EmptyDataError:无列可解析问题求助

解决pandas读取txt文件时的EmptyDataError问题

嘿,我来帮你搞定这个问题!你说你创建了一个存储三个文件夹路径的列表,每个文件夹下有大量.txt文件,想把每个文件转成pandas DataFrame,但运行代码时遇到了报错。先看看你的代码和报错信息:

你的代码

for l in list: 
    for root, dirs, files in os.walk(l, topdown=False): 
        for name in files: 
            #print(os.path.join(root, name)) 
            df = pd.read_csv(os.path.join(root, name))

报错信息

Traceback (most recent call last): 
  File "feature_drebin.py", line 18, in <module> 
    df = pd.read_csv(os.path.join(root, name)) 
  File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 709, in parser_f 
    return _read(filepath_or_buffer, kwds) 
  File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 449, in _read 
    parser = TextFileReader(filepath_or_buffer, **kwds) 
  File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 818, in __init__ 
    self._make_engine(self.engine) 
  File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 1049, in _make_engine 
    self._engine = CParserWrapper(self.f, **self.options) 
  File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 1695, in __init__ 
    self._reader = parsers.TextReader(src, **kwds) 
  File "pandas/_libs/parsers.pyx", line 565, in pandas._libs.parsers.TextReader.__cinit__ 
pandas.errors.EmptyDataError: No columns to parse from file

问题分析

从报错信息和你描述的txt文件格式(每行是一个单独的条目,比如类似android.permission.INTERNET这类内容)来看,有两个核心问题:

  • 部分.txt文件是空的,导致pandas找不到可解析的列结构
  • pd.read_csv默认按逗号分隔解析列,但你的文件没有逗号分隔符,自然识别不到有效列

解决方案

1. 先修正变量名,避免覆盖内置类型

不要用list作为变量名,它是Python的内置类型,会引发潜在问题,改成比如folder_paths:

folder_paths = ["你的第一个文件夹路径", "你的第二个文件夹路径", "你的第三个文件夹路径"]

2. 跳过空文件,适配你的txt格式读取

我们可以添加空文件检查,同时指定读取规则适配你的文件结构:

import os
import pandas as pd

folder_paths = ["路径1", "路径2", "路径3"]  # 替换成你的实际文件夹路径

for folder in folder_paths:
    for root, dirs, files in os.walk(folder, topdown=False):
        for file_name in files:
            file_path = os.path.join(root, file_name)
            # 跳过空文件
            if os.path.getsize(file_path) == 0:
                print(f"跳过空文件: {file_path}")
                continue
            # 读取txt文件,每行作为一条数据,自定义列名为features
            df = pd.read_csv(file_path, header=None, names=['features'])
            # 这里可以添加你对df的后续处理(比如合并、特征提取等)
            print(f"成功读取文件: {file_path},数据行数: {len(df)}")

补充:如果是key:value格式的txt文件

要是你的txt内容是key:value结构(比如permission: android.permission.INTERNET),可以指定分隔符拆分列:

df = pd.read_csv(file_path, sep=':', header=None, names=['key', 'value'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:41:56