python中各种文件格式的文件读取和保存(csv, txt, xlsx, 图片)
文件打开方式
模式 | 说明 |
r | 读模式 |
w | 写模式 |
a | 追加模式 |
b | 二进制模式(可与其他模式组合使用) |
+ | 读、写模式(可与其他模式组合使用) |
#! _*_ coding='UTF-8' _*_
import numpy as np
import pandas as pd
import csv
import os
from PIL import Image
#读取xlsx格式的文件 第一个sheet,读取行索引和列索引 DataFrame格式
data_set = pd.read_excel('filename.xlsx', sheet_name=0, header=None)
#将DataFrame格式转化为array格式
data_set = np.array(data_set, dtype=float)
print("数据类型:",type(data_set), data_set)
#读取csv格式的文件
data_set = pd.read_csv('filename.csv', header=None)
#将DataFrame格式转化为array格式
data_set = np.array(data_set)
print("数据类型:",type(data_set), data_set)
#保存文件为csv格式 需首先将数据转化为DataFrame格式
data_set = pd.DataFrame(data_set)
data_set.to_csv('save_filename.csv')
#使用csv模块读取csv文件 'r'表示读模式
with open('filename.csv', 'r') as file:
data_set = csv.reader( file )
print(type(data_set))
temp_set = []
for line in data_set:
temp_set.append(line)
#使用csv模块保存为csv格式 'w'表示写模式
with open('saved_filename.csv', 'w') as file:
data_set = csv.writer( file )
# data_set.writerows( temp_set ) #一次保存完
for i in range(len(temp_set)): #分开保存
data_set.writerow( temp_set[i] )
#读取图片文件夹下的图片
root_path = 'D:/Code_py/Python库/'
images_project = 'image_filesname/'
images_path = os.path.join(root_path, images_project)
#将图片名称存入列表
images_list = os.listdir(images_path)
print(images_list)
for image_path in images_list:
with Image.open(os.path.join(images_path, image_path)) as im:
#打印图片的信息
# print(im)
#保存图片为另一种格式
im.save( os.path.join(images_path, image_path[:-4]+'.png') )
#读取txt文件夹下的txt文件
root_path = 'D:/Code_py/Python库/'
txts_project = 'txt_filesname/'
txts_path = os.path.join(root_path, txts_project)
#将图片名称存入列表
txts_list = os.listdir(txts_path)
print(txts_list)
all_txt = []
for txt_path in txts_list:
with open(os.path.join(txts_path, txt_path),'r',encoding='UTF-8') as txt:
#读取当前txt文件的所有内容
txt_lines = txt.readlines()
txt_label = []
#将当前txt文件的每行切割
for line in txt_lines:
label = line.strip().split(',')
txt_label.append(label)
#保存txt文件为另一种格式
np.save( os.path.join(txts_path, txt_path[:-4]+'.npy'), txt_label )
#存储所有的txt文件内容
all_txt.append(txt_label)
1、读取txt文件
下面的代码中需要设置你读取数据的数组的维度信息,如下
datamat = np.zeros((rows, 6)) #表示6列数据
# -*- coding: cp936 -*-
import re
import linecache
import numpy as np
import os
filename = 'preprocess1.txt'
# 数值文本文件转换为双列表形式[[...],[...],[...]],即动态二维数组
# 然后将双列表形式通过numpy转换为数组矩阵形式
# 数值文本文件直接转换为矩阵数组形式方法二
def txt_to_matrix(filename):
file = open(filename)
lines = file.readlines()
# print lines
# ['0.94\t0.81\t...0.62\t\n', ... ,'0.92\t0.86\t...0.62\t\n']形式
rows = len(lines) # 文件行数
datamat = np.zeros((rows, 6)) # 初始化矩阵
row = 0
for line in lines:
line = line.strip().split('\t') # strip()默认移除字符串首尾空格或换行符
print(line)
datamat[row, :] = line[:]
row += 1
return datamat
# 数值文本文件直接转换为矩阵数组形式方法三
def text_read(filename):
# Try to read a txt file and return a matrix.Return [] if there was a mistake.
try:
file = open(filename, 'r')
except IOError:
error = []
return error
content = file.readlines()
rows = len(content) # 文件行数
datamat = np.zeros((rows, 6)) # 初始化矩阵
row_count = 0
for i in range(rows):
content[i] = content[i].strip().split('\t')
datamat[row_count, :] = content[i][:]
row_count += 1
file.close()
return datamat
'''if __name__ == '__main__':
filename = 'winedata.txt'
# 二维列表
data = txt_to_matrix(filename)
print (data)
print(data.__len__())
#out = text_read('winedata.txt')
#print(out)'''
2、读取csv文件
在python中内置了csv库,通过调用相关函数即可实现文件的读取,将csv文件读取载入到数组可以采用python的pandas库中的read_csv()
函数来读取。具体实现如下:
import numpy as np
import pandas as pd
import os
df = pd.read_csv('preprocess.csv') #返回一个DataFrame的对象,这个是pandas的一个数据结构
df.columns=["Col1","Col2","Col3","Col4","Col5","Col6","Col7","Col8"]
X = df[["Col1","Col2","Col3","Col4","Col5","Col6","Col7"]] #抽取前七列作为训练数据的各属性值
X = np.array(X)
print X
y1 = df["Col8"] #最后一列作为每行对应的标签label
Y = np.array(y1)
print Y