Python将同一文件夹下大量txt存入一个Excel文件(xlwt\openpyxl)以及批量合并txt的超快方法

数据说明

这个数据是我们组找的19年全国大学生数学建模竞赛C题的数据集,是上海市出租车GPS数据集,来自香港科技大学计算机科学与工程系智慧城市研究小组所用的科研数据。
附上网盘链接:https://pan.baidu.com/s/1ERkIz8jD5_TVJULuF361Yw(如果链接打不开大家可以自己找,公开的)
数据集有4316个txt文件,每一个文件是一个司机在上海一天的GPS轨迹和时间点。每列分别是:司机编号,时间,经度,纬度,夹角角度(不是很清楚怎么用),瞬时速度,载客人数。
处理目的:txt太多不好处理,所以想用python将所有txt合到一起,成一个excel文件。
在这里插入图片描述

用xlrd和xlwt读写excel

首先下载安装xlrd和xlwt这两个库。

pip install xlwt

因为python不熟,写的时候出现了很多bug,比如跑完只有最后一行(好智障的问题,原来是我把建文件的语句写到了循环里面,难受死了),后来每次记录了每个文件的行数,保证率不会覆盖。
这个方法是一个方格一个方格的写进去的,所以读取的txt的一行要存成一个list,用下标定位。

import os
import xlwt

def eachFile(filepath):
    pathDir = os.listdir(filepath)  # 遍历文件夹中的text
    return pathDir

def readfile(name):
    fopen = open(name, 'r')
    cou = 0
    for lines in fopen.readlines():  # 按行读取text中的内容
        cou = cou + 1
        lines = lines.replace("\n", "").split(",")#分割一下
        lines_l = list(lines)#每一行都是一个list了
        # print(lines_l)
    fopen.close()
    return cou


filePath = "G:\\桌面\\Taxi"#装txt的文件夹的路径
pathDir = eachFile(filePath)

ch = []
le = []
le.append(0)
for allDir in pathDir:
    # child = os.path.join('%s%s' % (filepath, allDir))
    child = "G:\\桌面\\Taxi" + '\\' + allDir
    ch.append(child)
    readfile(child)
    le.append(readfile(child))

#用le记录一个txt有多少行,方便下一个文件读取的时候不会在写入时覆盖
for i in range(1, len(le)):
    le[i] = le[i] + le[i - 1]
    # print(le)

file = xlwt.Workbook(encoding='utf-8')
# 新建sheet
sheet = file.add_sheet('taxi')

for i in range(len(ch)):
    k = le[i] + 1
    print(k)
    with open(ch[i]) as f1:
        print(ch[i])
        for lines in f1.readlines():
            lines = lines.replace("\n", "").split(",")
            lines_l = list(lines))#每一行都是一个list
            i = 0
            for line in lines_l:
                sheet.write(k, i, line)#一个一个写
                i = i + 1
            k = k + 1
        f1.close()

file.save("G:\\桌面\\taxi.xls")#生成文件的路径,一定要记得save

使用openpyxl库读写excel

xlrd和xlwt处理的是xls文件,单个sheet最大行数是65535。我想处理更多数据,网上查到了使用openpyxl函数,最大行数达到1048576。 -----然而我天真的想用这个处理六百万的数据集,跑了几个小时后,文件是生成了,打不开!!如果数据量超过65535就会遇到:ValueError: row index was 65536, not allowed by .xls format最终还是只能存65535行,打开会显示下面的错误。

在这里插入图片描述

不过我存了八万多行,虽然还是显示文件损坏,但是可以恢复,数据量再多就不一定行了,修复也打不开,或者乱码,暂时未解决这个问题。
恢复文件方法:打开Excel,文件->打开->浏览->选打开并修复->修复
在这里插入图片描述

在这里插入图片描述

首先需要下载并导入 import openpyxl

pip install openpyxl
import os
import openpyxl as xl

def eachFile(filepath):
    pathDir =os.listdir(filepath)        #遍历文件夹中的text
    return pathDir

def readfile(name):
    fopen=open(name, 'r')
    cou=0
    for lines in fopen.readlines():         #按行读取text中的内容
        cou=cou+1
        lines = lines.replace("\n", "").split(",")
        lines_l = list(lines)
        #print(lines_l)
    fopen.close()
    return cou

filePath = "G:\\桌面\\t_2"
pathDir = eachFile(filePath)

ch = []
for allDir in pathDir:
    # child = os.path.join('%s%s' % (filepath, allDir))
    child = "G:\\桌面\\t_2" + '\\' + allDir
    ch.append(child)
    readfile(child)

wb = xl.Workbook()
ws = wb.active
ws.title = "sheet"

for i in range(len(ch)):
    with open(ch[i]) as f1:
        print(ch[i])
        for lines in f1.readlines():
            lines = lines.replace("\n", "").split(",")
            lines_l = list(lines)
            ws.append(lines_l)#直接写一行了,比上一个方法简单

        f1.close()

wb.save("G:\\桌面\\t_2.xlsx")#这个xlsx跟xls都是excel文件,这个比较新,适用与2013以后版本

最简单的批量合并txt(适用海量数据)

前面的方法我还是不能把我的4千多个txt合到一起,失败的尝试,但是练习了一下python,发现这个方法过后觉得真是,太简便了,怎么不早点找到。
就不自己操作截图了,借用百度知道的图片文字:

win10批量合并办法:

1、想要进行批量合并首先要将合并的txt文件移动到同一文件夹下,文件名要有顺序,我们善用批量改名功能。
在这里插入图片描述

2、进入桌面,按下“win + R”快捷键点击运行窗口,写入“cmd”并打开确定点击命令提示符。

在这里插入图片描述

3、进入命令提示符窗口后,使用“cd 文件路径”命令进入需要合并的txt文件的目录,小编这里合并的文件是在“F:\stock”目录下。

在这里插入图片描述

4、进入目录后,写入“type *.txt >>f:\111.txt”,按下回车,以后会将当前目录下的所有txt文件的内容按照序号顺序合并到到“f:\111.txt”中。

在这里插入图片描述

完成了,所有的txt合到了一个txt里面,当然是无法直接打开的,现在可以导入到Mysql里,进行数据处理了(是有六百多万条的样子)~

参考:https://www.cnblogs.com/shaosks/p/6098282.html

### 回答1: 好的,我可以回答这个问题。您可以使用Python中的os和xlwt库来实现这个功能。以下是一个简单的示例代码: ``` import os import xlwt # 指定文件夹路径和要提取的文本 folder_path = "your_folder_path" target_text = "your_target_text" # 创建Excel文件和工作表 workbook = xlwt.Workbook(encoding="utf-8") worksheet = workbook.add_sheet("Text Extraction") # 设置表头 worksheet.write(, , "File Name") worksheet.write(, 1, "Text") # 遍历文件夹中的所有txt文件 row = 1 for filename in os.listdir(folder_path): if filename.endswith(".txt"): file_path = os.path.join(folder_path, filename) with open(file_path, "r", encoding="utf-8") as f: # 读取文件内容 file_content = f.read() # 查找目标文本 if target_text in file_content: # 将文件名和目标文本写入Excel表格中 worksheet.write(row, , filename) worksheet.write(row, 1, target_text) row += 1 # 保存Excel文件 workbook.save("text_extraction.xls") ``` 您需要将代码中的"your_folder_path"和"your_target_text"替换为您自己的文件夹路径和目标文本。此代码将在指定文件夹中查找所有txt文件,并将包含目标文本的文件名和目标文本写入Excel表格中。 ### 回答2: 当然,下面是一个Python编写的脚本,可以从指定文件夹批量提取txt文件中的指定文本,并将其导出到Excel表格中: ```python import os import glob import openpyxl def extract_text_from_file(file_path): with open(file_path, 'r', encoding='utf-8') as file: content = file.read() # 在这里添加提取文本的逻辑,可以使用正则表达式或其他方法来匹配需要提取的文本 # 提取的文本可以存储到一个列表中,如texts.append(extracted_text) # 这里只是一个示例: extracted_text = content.split(' ') return extracted_text def extract_text_from_folder(folder_path): texts = [] for file_path in glob.glob(os.path.join(folder_path, '*.txt')): extracted_text = extract_text_from_file(file_path) texts.extend(extracted_text) return texts def export_to_excel(texts): wb = openpyxl.Workbook() sheet = wb.active for i, text in enumerate(texts, start=1): sheet.cell(row=i, column=1, value=text) wb.save('extracted_text.xlsx') if __name__ == '__main__': folder_path = '指定文件夹的路径' texts = extract_text_from_folder(folder_path) export_to_excel(texts) ``` 使用这个脚本,请确保已经安装了`openpyxl`库,可以使用`pip install openpyxl`命令进行安装。另外,您需要将`folder_path`变量替换为您要提取txt文件文件夹路径。 这个脚本首先定义了两个函数`extract_text_from_file`和`extract_text_from_folder`,分别用于从单个txt文件提取文本和遍历指定文件夹提取全部txt文件的文本。然后使用`export_to_excel`函数将提取的文本保存Excel文件中。 希望这个脚本对您有所帮助!如果有任何问题,请随时提问。 ### 回答3: 你好!以下是一个简单的Python脚本示例,可以从指定文件夹批量提取txt文件中的指定文本并保存Excel文件中。 ```python import os import openpyxl # 指定文件夹路径 folder_path = "指定文件夹路径" # 创建Excel文件 workbook = openpyxl.Workbook() sheet = workbook.active # 设置要提取的文本 target_text = "指定文本" # 遍历文件夹中的所有文件 for filename in os.listdir(folder_path): if filename.endswith(".txt"): file_path = os.path.join(folder_path, filename) # 打开文本文件并按行读取内容 with open(file_path, "r") as file: lines = file.readlines() # 遍历每一行 for line in lines: # 如果找到目标文本则写入Excel中 if target_text in line: row = (filename, line) sheet.append(row) # 保存Excel文件 workbook.save("提取结果.xlsx") ``` 请将代码中的`指定文件夹路径`修改为你需要操作的文件夹路径,将`指定文本`修改为你要提取的目标文本。运行脚本后,将会在当前目录下生成一个名为`提取结果.xlsx`的Excel文件,其中包含了每个txt文件中包含目标文本的行。请确保已安装`openpyxl`库,可以通过`pip install openpyxl`命令进行安装。 希望对你有帮助!如果有任何问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值