python各种文件读取

**

python各种文件读取

**

  1. .pkl文件

  2. .hdf5文件

  3. .json文件

  4. .csv文件

  5. .txt文件

1.pkl文件

pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西。正确的操作方式是使用Pickle模块。Pickle模块将任意一个Python对象转换成一系统字节,这个操作过程叫做串行化对象。

import pickle
file_name='文件路径/文件名.pkl'
f=open(file_name,'rb')
p2=pickle.load(f)
print(type(p2)) #
print(p2) # 输出p2的内容

2.hdf5文件

一个HDF5文件是一种存放两类对象的容器:dataset和group. Dataset是类似于数组的数据集,而group是类似文件夹一样的容器,存放dataset和其他group。在使用h5py的时候需要牢记一句话:groups类比词典,dataset类比Numpy中的数组

import h5py
f = h5py.File('文件','r')   #打开h5文件  
f                          #可以查看所有的主键  
print(list(f.keys()))

3.json文件

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
json.dumps(): 用于将 Python 对象编码成 JSON 字符串。
json.loads(): 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据

import json;
data1 = {
           'name' : 'jack',
            'age' : 20,
            'like': ('sing','dance','swim'),
            'score': {'chinese':80,'math':60,'english':99}
}

data2 = json.dumps(data1);
data3 = json.loads(data2);
print('原始数据');
print(data1);
print('转化成json格式');
print(data2);
print('再转化成python格式');
print(data3);
原始数据
{'name': 'jack', 'age': 20, 'like': ('sing', 'dance', 'swim'), 'score': {'chinese': 80, 'math': 60, 'english': 99}}
转化成json格式
{"name": "jack", "age": 20, "like": ["sing", "dance", "swim"], "score": {"chinese": 80, "math": 60, "english": 99}}
再转化成python格式
{'name': 'jack', 'age': 20, 'like': ['sing', 'dance', 'swim'], 'score': {'chinese': 80, 'math': 60, 'english': 99}}

.json文件读取

# 读取json文件内容,返回字典格式
with open('./source_file/info.json','r',encoding='utf8')as fp:
    json_data = json.load(fp)
    print('这是文件中的json数据:',json_data)
    print('这是读取到文件数据的数据类型:', type(json_data))

在这里插入图片描述



# 将字典数据写入到json文件中
dict1 = {'name': '张三', 'age': 18, 'sex': '男'}
with open('./source_file/info.json','a',encoding='utf8')as fp:
    json.dump(dict1,fp,ensure_ascii=False)  

 #  如果ensure_ascii ' 'false,则返回值可以包含非ascii值

python除了提供json文件的操作还提供了对于json格式转换的方法;
loads() :将json字符串转换成字典格式;dumps() 将字典格式数据转换成json格式;

# 将json字符串转换成字典格式
str1 = '{"name": "张三", "age": 18, "sex": "男"}'
print('这是转换后的数据:',json.loads(str1))
print('这是转换后的数据类型:',type(json.loads(str1)))

在这里插入图片描述



# 将字典格式数据转换成json格式
dict1 = {'name': '张三', 'age': 18, 'sex': '男'}
print('这是将字典转换之后的数据:',json.dumps(dict1,ensure_ascii=False))
print('这是将字典转换之后的数据类型:',type(json.dumps(dict1,ensure_ascii=False))) #  如果ensure_ascii ' 'false,则返回值可以包含非ascii值


在这里插入图片描述

4.csv文件

参考链接
读取或写入csv文件时,首先要import csv这个库,然后利用这个库提供的方法进行对文件的读写。

获取每一行。读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象,我们可以对这个对象进行遍历,输出每一行,某一行,或某一列。代码如下:

import csv
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    print(type(reader))
   
    for row in reader:
        print(row)

输出结果如下,是列表形式
在这里插入图片描述
获取某一行,如果你只想要其中的一行,可以先对reader进行一个类型转换,用list函数把它转换成列表,然后对对列表进行取元素,就可以获取到某一行的内容了,如下:

import csv
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    result = list(reader)
    print(result[1])

在这里插入图片描述获取某一列。如果想要获取到其中一列的内容,可以在第一种情况下,对输出加一个下标,这样输出的就是某一列的内容的。
下面展示一些 内联代码片

 import csv
 with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for i in reader:
    print(i[0])

这里,获取第一列的内容
在这里插入图片描述

5.txt文件

f = open("data.txt","r")   #设置文件对象
f.close() #关闭文件


#为了方便,避免忘记close掉这个文件对象,可以用下面这种方式替代
 with open('data.txt',"r") as f:    #设置文件对象
    str = f.read()    #可以是随便对文件的操作

按行读取文件

#按行读取文件
#第一种方法
f = open("data.txt","r")   #设置文件对象
line = f.readline()
line = line[:-1]
while line:             #直到读取完文件
    line = f.readline()  #读取一行文件,包括换行符
    line = line[:-1]     #去掉换行符,也可以不去
 f.close() #关闭文件


#第二种方法
data = []
for line in open("data.txt","r"): #设置文件对象并读取每一行文件
    data.append(line)               #将每一行文件加入到list中

 #第三种方法
f = open("data.txt","r")   #设置文件对象
data = f.readlines()  #直接将文件中按行读到list里,效果与方法2一样
f.close()  

版权声明:本文为weixin_45798469原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。