452046297 发表于 2020-6-10 11:35:03

批量txt文本转换成xlsx文件,用python

大佬们,我有大量txt文本数据,每个文本内容格式一致,需要批量将文本内的数据转换成xlsx或xls并另存文件(文件名与txt文件保持一致)
.有没有大佬教一教我啊
附件是TXT文件及转换后文件截图

小甲鱼的铁粉 发表于 2020-6-10 11:35:39

@Twilight6

BIO-张磊 发表于 2020-6-10 12:46:10

本帖最后由 BIO-张磊 于 2020-6-10 13:08 编辑

我试过了,你这不是txt文件格式,分割符不是\t,是空格,请把标准的txt文件格式发上来,如果按照你发的这个以空格作为分隔符的txt文件,可以试试在面的代码

BIO-张磊 发表于 2020-6-10 13:07:36

import pandas as pd##没有这个就pip install pandas
import os

file = os.listdir(".")#把你所有的txt文件夹放在一个目录下,再把这个代码文件也放在这个目录下

for each in file:
        if os.path.splitext(each) == ".py":
                continue
       
        else:
                data = pd.read_csv(each,sep = "[ ]+")
                new_name = os.path.splitext(each)
               
                data.to_excel("%s.xlsx" %new_name,header =None)##如果那个bq-BMS Log File不重要,可以去掉
       

452046297 发表于 2020-6-10 13:26:53

BIO-张磊 发表于 2020-6-10 12:46
我试过了,你这不是txt文件格式,分割符不是\t,是空格,请把标准的txt文件格式发上来,如果按照你发的这个 ...

就是附件中的文本文件

BIO-张磊 发表于 2020-6-10 13:32:10

452046297 发表于 2020-6-10 13:26
就是附件中的文本文件

我知道,所以我说你这个txt文件是假的,真正的txt文件分隔符是\t,你这个是空格,可能你不明白我说的是什么。但是我下面给你的代码可以解决你的问题

452046297 发表于 2020-6-10 13:58:17

BIO-张磊 发表于 2020-6-10 13:32
我知道,所以我说你这个txt文件是假的,真正的txt文件分隔符是\t,你这个是空格,可能你不明白我说的是什 ...

Warning (from warnings module):
File "C:\Users\jie.ding\Desktop\Code\txtzhuan.py", line 11
    data = pd.read_csv(each,sep = "[ ]+")
ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
Traceback (most recent call last):
File "C:\Users\jie.ding\Desktop\Code\txtzhuan.py", line 11, in <module>
    data = pd.read_csv(each,sep = "[ ]+")
File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 685, in parser_f
    return _read(filepath_or_buffer, kwds)
File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 457, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 895, in __init__
    self._make_engine(self.engine)
File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 1147, in _make_engine
    self._engine = klass(self.f, **self.options)
File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 2288, in __init__
    f, handles = _get_handle(
File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\common.py", line 402, in _get_handle
    f = open(path_or_buf, mode, errors="replace", newline="")
PermissionError: Permission denied: '.idea'

BIO-张磊 发表于 2020-6-10 14:09:53

452046297 发表于 2020-6-10 13:58
Warning (from warnings module):
File "C:%users\jie.ding\Desktop\Code\txtzhuan.py", line 11
    ...

改成
data = pd.read_csv(each,sep = "[ ]+",engine = "python")
或者
data = pd.read_csv(each,sep = "[ ]+",engine = 'python')

452046297 发表于 2020-6-10 14:20:40

BIO-张磊 发表于 2020-6-10 14:09
改成
data = pd.read_csv(each,sep = "[ ]+",engine = "python")
或者


还是一样的报错

BIO-张磊 发表于 2020-6-10 14:26:25

452046297 发表于 2020-6-10 14:20
还是一样的报错

那就是你抄写的代码或者操作步骤或者你的文件格式有问题了,我用你给的文件这个代码试过了是可行的

BIO-张磊 发表于 2020-6-10 14:36:50

还有一种可能,你按照我说的步骤来,
第一步,新建一个目录,把所有txt文件拷贝过来,
第二步,你把写好的代码保存成一个文件,拷贝到这个目录里
第三部,双击代码,运行

452046297 发表于 2020-6-10 14:53:57

BIO-张磊 发表于 2020-6-10 14:36
还有一种可能,你按照我说的步骤来,
第一步,新建一个目录,把所有txt文件拷贝过来,
第二步,你把写好 ...

可以了,除了第一列是时间,第一行标题,其他的需要转换成数值,有办法实现吗?

BIO-张磊 发表于 2020-6-10 14:58:09

452046297 发表于 2020-6-10 14:53
可以了,除了第一列是时间,第一行标题,其他的需要转换成数值,有办法实现吗?

不明白你在说什么,举个例子

452046297 发表于 2020-6-10 15:16:52

BIO-张磊 发表于 2020-6-10 14:58
不明白你在说什么,举个例子

https://fishc.com.cn/home.php?mod=space&uid=755372&do=album&picid=12614
如红色框中数据

qiuyouzhi 发表于 2020-6-10 15:18:15

小甲鱼的铁粉 发表于 2020-6-10 11:35
@Twilight6

请不要@人
有人看到就回答了

小甲鱼的铁粉 发表于 2020-6-10 15:19:18

qiuyouzhi 发表于 2020-6-10 15:18
请不要@人
有人看到就回答了

好的{:10_332:}

BIO-张磊 发表于 2020-6-10 15:28:52

452046297 发表于 2020-6-10 15:16
如红色框中数据

把data.to_excel("%s.xlsx" %new_name,header =None)
改成
data.to_csv("%s.csv" %new_name,header =None)
重新进行刚才的步骤

因为xlsx格式的文件比较特殊
保存成csv文件就可以进行excel的加减乘除了

452046297 发表于 2020-6-10 16:00:10

BIO-张磊 发表于 2020-6-10 15:28
把data.to_excel("%s.xlsx" %new_name,header =None)
改成
data.to_csv("%s.csv" %new_name,header =No ...

完美解决,感谢
现在还有最后一个问题,我打包成exe文件不能运行是什么原因

BIO-张磊 发表于 2020-6-10 16:26:21

452046297 发表于 2020-6-10 16:00
完美解决,感谢
现在还有最后一个问题,我打包成exe文件不能运行是什么原因

把if os.path.splitext(each) == ".py"
改成
if os.path.splitext(each) != ".txt"
再打包
如果不行,我就不会了,python打包是个玄学。所以python只适合自己坐坐小脚本,不适合做稳定软件
如果满意上面的答案请给最加
页: [1]
查看完整版本: 批量txt文本转换成xlsx文件,用python