[英]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.