![](/img/trans.png)
[英]read data from multiple files but would like to write that data into a new text file but file shows up blank
[英]Read data from text files having same name structure and append all data into a new file
我有一些數據文件,例如data1.txt
, data 2.txt
等等。 我想使用單個循環結構讀取所有這些數據文件,並將數據值附加到單個文件中,例如data-all.txt。
我可以使用以下任何一種編程語言: c
, python
, matlab
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 zip和csv模塊來實現此目的。 在單個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.