Python 批量读取 TXT 并转换为 CSV 的方法

Hazel
Hazel
发布时间:2026-10-12| 3人浏览过
原创

本文介绍如何使用 Python 批量读取指定目录下的 TXT 文件,并通过 linecache 模块提取特定行数据,经过字符串处理后转换为 CSV 格式。文章提供了完整的代码示例,涵盖文件遍历、行读取、数据清洗及文件写入等关键步骤。

实现思路与核心模块

该任务的核心在于批量处理文件以及高效读取特定行数据。Python 的 os 模块用于处理文件路径和目录列表,而 linecache 模块则被用于缓存并读取文件中的特定行,这在处理大文件或需要随机访问特定行时较为常用。

完整代码实现

# -*- coding: utf-8 -*-
"""
Created on Fri Jul 29 15:49:06 2016
@author: user
"""
import os
#从文件中读取某一行 linecache.checkcache可以刷新cache ,linecache可以缓存某一行的信息   
import linecache 
 
 
def GetFileNameAndExt(filename):
 (filepath,tempfilename) = os.path.split(filename);
 (shotname,extension) = os.path.splitext(tempfilename);
 return shotname
 
fileList=[]
fileOutList=[]
for filename in os.listdir(r'D:\input'):
 pa='D:\input\%s'%filename
 fileList.append(pa)
 name=GetFileNameAndExt(pa)
 name+='.csv'
 pa='D:\output\%s'%name
 fileOutList.append(pa)
 
 
for files in range(0,len(fileList)):
 lineCount = len(open(fileList[files],'rU').readlines())
 print '====this file %s : %d lines'%(fileList[files],lineCount)
 print '====有效数据行数 %d lines'%( lineCount-14)
 global cnt
 global mainContent
 global s1
 s1='' 
 mainContent=''
 cnt=0
 for var in range(14,lineCount+1):
 
  theline = linecache.getline(fileList[files], var) 
  s= theline[15:13+104] 
  s = s.replace(' ',',') # 将字符串里的k全部替换为8
  s = s.replace(' ',',') # 将字符串里的k全部替换为8
  if var%2 == 0:
    s+=(',')
    s1= s
  else:
   string =s1.strip('\n') + s+'\n'
   mainContent +=string
   cnt+=1
   print '====out line count =%d'%cnt
#  print s
 
 print '===final data====='
# print mainContent
 # 打开一个文件
 fo = open(fileOutList[files], "wb")
 fo.write( mainContent);
 # 关闭打开的文件
 fo.close()

代码逻辑解析

脚本首先定义了 GetFileNameAndExt 函数,用于从完整路径中提取文件名并去除扩展名。随后,通过 os.listdir 遍历 D:\input 目录下的所有文件,构建源文件列表 fileList 和目标 CSV 文件列表 fileOutList。

在处理每个文件时,程序首先计算总行数,并打印有效数据行数(总行数减去前 14 行)。接着,通过 linecache.getline 读取从第 15 行开始的每一行数据。代码对读取的字符串进行了切片处理(theline[15:13+104]),并将空格替换为逗号。逻辑中通过判断行号的奇偶性来拼接字符串,最终将处理后的内容写入目标 CSV 文件。

注意事项

该脚本使用了全局变量来存储中间状态,这在处理大量文件时可能会影响内存效率。此外,文件路径硬编码为 D:\input 和 D:\output,实际使用时需根据环境修改。代码中的注释提到替换字符串,但实际逻辑是替换空格为逗号,建议根据实际需求调整字符串处理部分。

以上就是 python 循环读取 txt 文档 并转换成 csv 的详细内容,更多关于 python txt转csv 的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。