提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
最仅实验数据处理中遇到了不同格式文件,需要读取文件中的数据。
提示:以下是本篇文章正文内容,下面案例可供参考
一、txt格式文件
1.1 保存txt
1.1.1 c语言代码示例
#include <stdio.h>
#include <stdlib.h> //stdlib 头文件,即standard library**标准库头文件**
int main()
{
FILE *fp;//文件指针
int i, d;
/*文件的打开*/
fp=fopen("data.txt","w");//fopen打开文件,这个文件可以是当前不存在的。“w”以写入的形式打开,“r”以读的形式打开
if(fp==NULL) //判断如果文件指针为空
{
printf("File cannot open! " );
exit(0);//在以0的形式退出,必须在文件开头有#include <stdlib.h>,stdlib 头文件即standard library标准库头文件
}
//写入东西
for(i=0; i<10; i++)
{
scanf("%d", &d);//用户输入 c语言用户输入字符--转-->字节--转-->ascii码的十进制表示0~127
fprintf(fp,"%d\t", d);//写入指针fp,写入的东西就是刚才的用户输入的d,注意这里的fp和d没有引号
}
//关闭文件
fclose(fp);
return 0;
}
1.2 读取txt数据
1.2.1 python代码示例
import numpy as np
import matplotlib.pyplot as plt
txt_path=gait_angle_100.txt #txt文件路径
gait_hip_angle = [] # 读取数据指定为list
gait_knee_angle = []
if __name__ == '__main__':
try:
file = open('txt_path', "r") #以读模式打开文件
# file = open('../35/gait_angle_100.txt',"r")
except FileNotFoundError: #如果文件不存在,给提示
print("file is not found")
else:
contents = file.readlines() #读取全部行
for content in contents: #显示一行
gait_hip_angle.append(float(content.split(' ')[0])) #每行用逗号分隔后,取第一个元素
gait_knee_angle.append(float(content.split(' ')[1])) #每行用逗号分隔后,取第一个元素
# 将list 转换成数组
gait_hip_angle_arr = np.array(gait_hip_angle)
gait_knee_angle_arr = np.array(gait_knee_angle)
二、csv格式文件
CSV 以逗号分隔值(字符分隔值);以纯文本形式存储数据表格,可由任意数目的记录组成,各条记录以某种换行符分隔开
2.1 保存csv
2.1.1 python代码示例
import csv #库文件
csv_path='***.csv'
with open('ccsv_path','w') as csvfile_name:
writer=csv.writer(csvfile_name) #writer函数 初始化写入对象,以逗号分隔字段
#1、writerow函数 以列表的形式 传入*单行*数据
writer.writerow(['id','name','age'])
writer.writerow(['1','a','20'])
writer.writerow(['2','b','21'])
writer.writerow(['3','c','22'])
#2、writerows函数 以二维列表的形式 传入*多行*数据
writer.writerows([['1','a','20'],['2','b','21'],['3','c','22']])
#以字典的形式写入
fieldnames = ['id', 'name', 'age']
writer=csv.DictWriter(csvfile_name,fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'id':'1','name':'a','age':'20'})
2.1.2 c代码示例
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;//文件指针
int i, No;
float salary;
/*文件的打开*/
fp=fopen("data.csv","w");//csv文件可以直接用excel打开
if(fp==NULL) //判断如果文件指针为空
{
printf("File cannot open! " );
exit(0); //在以0的形式退出,必须在文件开头有#include <stdlib.h>,stdlib 头文件即standard library标准库头文件
}
//写入东西
for(i=0; i<5; i++)
{
scanf("%d %f", &No,&salary);//用户出入
fprintf(fp,"%d,%.2f\n", No,salary);//!!!!!尤其注意这里要用逗号隔开,因为excel表里面就默认识别逗号隔开的才能分类fprintf(文件指针,格式字符串,列表)
} //关闭文件 fclose(fp); return 0;}
2.2 读取csv文件数据
2.2.1 python代码如下(示例):
#pandas读取
import pandas as pd #读取csv需要的库文件
import numpy as np #数组库文件
#csv文件路径
csv_path = '*******.csv'
df_c1 = pd.read_csv(csv_path, skiprows=605, nrows=813) #参数skiprows表示略过行数,nrows表示读取行数
F1x = df_c1["800"] #“800”表示对应列的名称,读取一列
F1y = df_c1["700"]
F1 = np.asarray([F1x, F1y]) #数据保存成数组
#为了方便下次使用存储数据,一般将数据保存为.npz格式的数据文件
np.savez('F1_dataname.npz', date=F1) #保存成.npz
F1_xy = np.load('F1_dataname.npz')['date'] #加载.npz文件
2.2.2 c代码示例
总结
通过对不同文件的数据读取,可以很方便的拿来处理。后面遇到不同格式的文件还会继续更新……