簡體   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