码农公社  210.net.cn  210= 1024  10月24日一个重要的节日--码农(程序员)节

把txt文件转成成csv文件格式,通过手动打开excel文件,然后导入txt来生产csv文件。

现在每周有大量的数据要处理,手动方式太不现实,决定用python自动化脚本来实现,思路:

1.读取文件夹中所有txt文件,保存到list中

2.对每个txt文件,自动生成同名的csv文件

3.对每个txt文件,根据分隔符来保存为csv文件,分隔符为分号“;”

在转换之前先把文件编码统一成'utf-8',因为在实现过程中,发现总会有编码报错问题出现。

4.新建txt文件夹来存放所有txt文件

完整代码如下:

import csv

import os

import shutil

from chardet.universaldetector import UniversalDetector

def get_encode_info(file):

with open(file, 'rb') as f:

detector = UniversalDetector()

for line in f.readlines():

detector.feed(line)

if detector.done:

break

detector.close()

return detector.result['encoding']

def read_file(file):

with open(file, 'rb') as f:

return f.read()

def write_file(content, file):

with open(file, 'wb') as f:

f.write(content)

def convert_encode2utf8(file, original_encode, des_encode):

file_content = read_file(file)

file_decode = file_content.decode(original_encode,'ignore')

file_encode = file_decode.encode(des_encode)

write_file(file_encode, file)

## Move *.txt to a folder

def move2txtfolder(path, txt_file_list):

txt_folder_path = path + '\\txt'

if not os.path.exists(txt_folder_path):

os.makedirs(txt_folder_path)

for file in txt_file_list:

des_path = os.path.join(txt_folder_path, os.path.basename(file))

shutil.move(file, des_path)

##在路径中找出所有的*.txt文件

def findtxt(path, txt_file_list):

file_name_list = os.listdir(path)

for filename in file_name_list:

de_path = os.path.join(path, filename)

if os.path.isfile(de_path):

if de_path.endswith(".txt"):  # Specify to find the txt file.

txt_file_list.append(de_path)

else:

findtxt(de_path, txt_file_list)

def txt2csv(txt_file):

##先把所有文件的encoding都转换成utf-8

encode_info = get_encode_info(txt_file)

if encode_info != 'utf-8':

convert_encode2utf8(txt_file, encode_info, 'utf-8')

csv_file = os.path.splitext(txt_file)[0] + '.csv'

with open(csv_file, 'w+', newline='', encoding='utf-8') as csvfile:

writer = csv.writer(csvfile, dialect='excel')

with open(txt_file, 'r', encoding='utf-8') as txtfile:

for line in txtfile.readlines():

line_list = line.strip('\n').split(';')

writer.writerow(line_list)

if __name__ == '__main__':

folder_path = r'C:\Details'

# ##如果文件夹中还有子文件夹,请用findtxt函数

# txt_file_list = []

# findtxt(folder_path, txt_file_list)

##如果文件夹中没有子文件夹的时候直接使用推导式来生产txt文件的list

txt_file_list = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if os.path.join(folder_path, file).endswith('.txt')]

for txt_file in txt_file_list:

txt2csv(txt_file)

move2txtfolder(folder_path, txt_file_list)

引自https://www.cnblogs.com/danvy/p/11667763.html,轻度整理。

python把csv文件转换txt_Python实现txt文件转csv格式相关推荐

  1. 如何将asc文件转换成的txt文件,并导入到sql server中?

    最近的工作是利用Arcgis处理得到pixels 数据,再用erdas 软件将pixels 数据转换成 ASCII码,最终生成了asc文件(文件中的数据每3个数据为一组,分别表示了: 横坐标X:纵坐标 ...

  2. python读取多个文件夹下所有txt_Python实现合并同一个文件夹下所有txt文件的方法示例...

    本文实例讲述了Python实现合并同一个文件夹下所有txt文件的方法.分享给大家供大家参考,具体如下: 一.需求分析 合并一个文件夹下所有txt文件 二.合并效果 三.python实现代码 # -*- ...

  3. Python 将MP3音频文件转换成MIDI乐谱文件

    Python 将MP3音频文件转换成MIDI乐谱文件 spleeter 1.系统环境 我的Python环境 安装spleeter pip install spleeter 查看spleeter是否安装 ...

  4. Python 学习笔记(3)对txt文件的读与写操作(下)

    上一章节我们讨论了如何对txt文本文件进行读写操作,这一张将讨论如何进行二进制文件的写与读.<Python 学习笔记(3)对txt文件的读与写操作(上)>的链接如下https://blog ...

  5. Python读取txt文件画Loss曲线图---txt文件转xls文件---xls文件转txt文件--xml文件转txt文件

    任务1- 读取.txt文件画折线图(曲线图) 任务2- 将.txt文件转换成.xls(excel)文件 任务3- 将.xls(excel)文件转换成.txt文件 任务4- 读取.txt文件画折线图(曲 ...

  6. python合并文件夹下的文件_Python实现合并同一个文件夹下所有txt文件的方法示例...

    本文实例讲述了Python实现合并同一个文件夹下所有txt文件的方法.分享给大家供大家参考,具体如下: 一.需求分析 合并一个文件夹下所有txt文件 二.合并效果 三.python实现代码 # -*- ...

  7. 【Python】转译日文乱码(txt文件)

    参考文章:[浅谈]日文的文本等出现乱码的情况以及解决办法 原理已在参考文章中简明,核心原理是使用python的decode和encode函数,附加python的文件操作,实现txt文件的读.写 程序工 ...

  8. java怎样输出一个文件夹,java合并一个文件夹下所有txt文件,输出到另一个txt,...

    java合并一个文件夹下所有txt文件,输出到另一个txt,最近写了个单元测试,递归调用方法,把同一个文件夹里所有的txt合并输出到一个txt文件.参考了两个博客,分别是已有的方法,还有个就是检测tx ...

  9. pip 安装protobuf_Python3.6安装protobuf模块+将proto文件转换成pb2.py文件

    Python对版本的对应即为苛刻,笔者第一次安装时遇到了很多坑,比如无法将proto文件转换成py文件,转换了之后文件无法使用,网上各种各样的解决办法都没有讲到重点.其实会出现各种各样的问题是由于版本 ...

最新文章

  1. leetcode算法题--石子游戏
  2. 海外投行抢滩大数据 人工智能等领域趋热
  3. nginx 知识点 :ctx_index and index
  4. 第十九期:CIO不懂老板数字化转型的目的,因为老板也不知道自己想要什么
  5. Leetcode--145. 二叉树的后序遍历(迭代递归)
  6. Outlook 2013 电子邮件账户设置备份与恢复
  7. 智能陈桥五笔输入法 for linux,智能陈桥五笔官方版
  8. Chrome版本下载
  9. Taobao网的目录分类结构
  10. 七月文章导读【5G相关】:从摩斯码到5G;5G承载网;5G链路自适应及CQI工作过程
  11. 百度瓦片地图在线下载以及合成
  12. 如何修改 Windows10 操作系统里某种文件类型的默认图标
  13. JavaScript 设计模式学习第七篇- 单例模式
  14. Unity VR成像原理
  15. 阿里云 数据库mysql卸载安装,基本上所有坑全趟了
  16. 基于Labview的水位水温控制系统——虚拟仪器实验设计报告
  17. 1367 查找二叉树(tree_a)
  18. 勾股定理计算机语言,勾股定理
  19. 初识IndexedDB本地存储
  20. 逻辑题:100层扔鸡蛋问题(扔球问题)

热门文章

  1. linux 常见命令 cp,Linux 常用命令之cp,一个可以煮饭的工具;
  2. rbenv mysql_mysql-无法在macOS Si上安装mysql2 gem
  3. kvm虚拟机安装esxi服务器,VMware vSphere虚拟机迁移至KVM virt-v2v方案
  4. 高级会计可以用计算机,高会无纸化考试计算器不好用 建excel计算可以吗?官方回复!...
  5. 测试linux系统的程序员,日常测试Linux命令
  6. aliyun maven 添加jar_Maven介绍及安装
  7. java 任务池_多线程的应用-异步任务线程池的简单实现
  8. linux如何卸载光驱显示busy,关于linux卸载设备时的busy问题处理
  9. java eclipse 入门_Eclipse使用入门教程介绍
  10. js创建file对象 字符串 txt_js-创建对象的多种方式