繁体   English   中英

从具有相同名称结构的文本文件中读取数据,并将所有数据附加到新文件中

[英]Read data from text files having same name structure and append all data into a new file

我有一些数据文件,例如data1.txtdata 2.txt等等。 我想使用单个循环结构读取所有这些数据文件,并将数据值附加到单个文件中,例如data-all.txt。

我可以使用以下任何一种编程语言: cpythonmatlab

pathlib模块非常适用于pathlib匹配文件,并且易于读取/写入:

from pathlib import Path

def all_files(dir, mask):
    for path in Path(dir).glob(mask):
        yield from path.open()

Path('data_all.txt').write_text(''.join(all_files('.', 'data*.txt')))

在python中首先,您必须创建所有文件路径的列表,然后才能在python中使用glob库。

import glob
import pandas as pd
path_list = glob.glob('Path/To/Your/DataFolder/pattern(data*)')

然后您可以使用list comprehension读取该数据。它将根据文件夹中的数据文件为您提供数据帧列表

list_data = [pd.read_csv(x,sep='\t') for x in path_list]

它将数据合并到单个数据帧中,您可以将其写为单个数据帧。

data_all = pd.concat(list_data,ignore_index=True)

现在您可以将数据帧写入单个文件中。

data_all.to_csv('Path',sep=',')

使用python zipcsv模块来实现此目的。 在单个for循环中:

例如:

import csv
with open("data_all.csv", "w") as f:
    csv_writer = csv.writer(f)
    for d1, d2, d3 in zip(open("data1.txt", "r"), open("data2.txt", "r"), open("data3.txt", "r")):
        csv_writer.writerow([d1, d2, d3])

可以通过读取每个文件的内容并将它们写入输出文件句柄来完成。 您描述中的文件结构包含数字,因此在开始阅读之前,我们可能需要调用sorted对它们进行排序。 “ files_search_pattern”应指向输入目录“ PATH / *。txt”,输出文件句柄应指向“ data-all.txt”

import glob

files_search_pattern = "*.txt"

files = sorted(glob.glob(files_search_pattern))

with open("data-all.txt", "wb") as output:
    for f in files:
        with open(f, "rb") as inputFile:
            output.write(inputFile.read())

在Windows中,使用copy data * .txt data-all.txt

在Unix中,使用cat data * .txt >> data-all.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM