python中各种文件类型的读写

2023-11-16

本文汇总了在python中各种类型文件的读取和写入,包含文本、图像、表格、log文件、pickle文件、npy文件、npz文件等。

  •  文本类型:txt文件、json文件、yaml文件
  •  图像类型:使用skimage、PIL、opencv、imageio/scipy、plt库
  •  表格类型:xlsx文件、csv文件
  •  其他类型:log文件、pickle文件、npy文件、npz文件

文本类型

txt文件

text_name = 'test.txt'

# 文件写入
lines = ['aaa\n', 'bbb\n', 'ccc\n']
with open(text_name, 'w') as file:
    # 逐行写入
    for line in lines:
        file.write(line)

    # 一起写入
    file.writelines(lines)

# 文件读取
with open(text_name, 'r') as file:
    # 逐行读取
    while True:
        line = file.readline()
        if not line:
            break
        words = line.split()

    # 一起读取
    lines = file.readlines()
    for line in lines:
        words = line.split()

json文件

import json
text_name = 'test.json'

# 文件写入
data = {'1': 1, '2': [{'a': 1}, {'b': 2}, {'c': 3}], 3: {1: '!', '2': '?'}} # key必须是string, 否则也会自动转换为string
with open(text_name, "w") as file:
    json.dump(data, file, indent=4)

# 文件读取
with open(text_name, "r") as file:
    data = json.load(file)
print(json.dumps(data, indent=4))

yaml文件

import yaml
text_name = 'test.yaml'

# 文件写入
data = {'1': 1, '2': [{'a': 1}, {'b': 2}, {'c': 3}], 3: {1: '!', '2': '?'}}
with open(text_name, "w") as file:
    yaml.dump(data, file, indent=4)

# 文件读取
with open(text_name, "r") as file:
    data = yaml.load(file, Loader=yaml.FullLoader)
print(yaml.dump(data, indent=4))

图像类型

使用skimage

from skimage import io
image_name = "test.jpg"

# 文件读取
img = io.imread(image_name)
print(type(img), img.dtype, img.shape) # numpy类型, [height, width, channel]

# 文件写入
io.imsave(image_name, img)

使用PIL

from PIL import Image
import numpy as np
image_name = "test.jpg"

# 文件读取
img = Image.open(image_name)
print(type(img), img.size) # PIL类型, [height, width]
img = np.array(img)
print(type(img), img.dtype, img.shape) # numpy类型, [height, width, channel]

# 文件写入
img = Image.fromarray(img)
img.save(image_name)

使用opencv

import cv2
image_name = "test.jpg"

# 文件读取
img = cv2.imread(image_name)
print(type(img), img.dtype, img.shape) # numpy类型, [height, width, channel]

# 文件写入
cv2.imwrite(image_name, img)

使用imageio/scipy

import imageio
from scipy import misc # 新版本scipy中接口已被移除,建议使用imageio替代
image_name = "test.jpg"

# 文件读取
img = imageio.imread(image_name)
print(type(img), img.dtype, img.shape) # imageio类型, [height, width, channel]

# 文件写入
imageio.imwrite(image_name, img)

使用plt

import matplotlib.pyplot as plt
image_name = "test.jpg"

# 文件读取
img = plt.imread(image_name)
print(type(img), img.dtype, img.shape) # numpy类型, [height, width, channel]

# 文件写入
plt.imsave(image_name, img)

表格类型

xlsx文件

import openpyxl
table_name = "test.xlsx"

# 文件写入
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = 'Sheet1'
sheet.cell(1, 1, "TEST") # 下标从[1, 1]开始

line1 = ['aaa', 1]
line2 = ['bbb', 2]
sheet.append(line1)
sheet.append(line2)

workbook.save(table_name)

# 文件读取
workbook = openpyxl.load_workbook(table_name)
sheet = workbook.get_sheet_by_name('Sheet1') # or sheet = workbook.active
print(sheet.title, sheet.max_row, sheet.max_column)
cell = sheet.cell(1, 1)
print(cell.value)

csv文件

import csv
table_name = 'test.csv'

# 文件写入
line1 = ['aaa', 1]
line2 = ['bbb', 2]
with open(table_name, 'w', newline='') as file:
    csv_write = csv.writer(file, dialect='excel')
    csv_write.writerow(line1)
    csv_write.writerow(line2)

# 文件读取
with open(table_name, 'r', newline='') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

其他类型

log文件

import logging

logger = logging.getLogger()
logger.setLevel(level=logging.DEBUG)

# 输出到文件
log_name = 'test.log'
filehandler = logging.FileHandler(log_name, mode='w')
filehandler.setLevel(level=logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(filename)s [line:%(lineno)d] - %(levelname)s: %(message)s")
filehandler.setFormatter(formatter)
logger.addHandler(filehandler)

# 输出到屏幕
consolehandler = logging.StreamHandler()
consolehandler.setLevel(level=logging.DEBUG)
logger.addHandler(consolehandler)

logger.info("INFO")
logger.debug("DEBUG")

pickle文件

import pickle
file_name = "test.pickle"

# 写入文件
string = [a*'a' for a in range(10)]
label = [i for i in range(10)]
with open(file_name, 'wb') as f:
    pickle.dump([string, label], f, protocol=2)

# 读取文件
with open(file_name, 'rb') as f:
    string, label = pickle.load(f)
    print(string, label)

npy文件

npy文件用于保存单个numpy类型的数组

import numpy as np
file_name = "test.npy"

# 写入文件
data = np.array([[1, 2], [3, 4]])
np.save(file_name, data)

# 读取文件
data = np.load(file_name)
print(data)

npz文件

npz文件用于同时保存多个numpy类型的数组

import numpy as np
file_name = "test.npz"

# 写入文件
data = {"data_1": np.array([[1, 2], [3, 4]]), "data_2": np.array([[1, 2], [3, 4]]) * 2}
np.savez(file_name, **data)

# 读取文件
data = np.load(file_name)
keys = list(data)
print(keys, data['data_1'], data['data_2'])

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中各种文件类型的读写 的相关文章

  • 基于JavaWeb的校园故障报修系统(源码+数据脚本+论文+技术文档)

    项目描述 临近学期结束 xff0c 还是毕业设计 xff0c 你还在做java程序网络编程 xff0c 期末作业 xff0c 老师的作业要求觉得大了吗 不知道毕业设计该怎么办 网页功能的数量是否太多 没有合适的类型或系统 等等 这里根据疫情
  • 基于SSM的亲子活动平台的搭建与实现(源码+数据脚本+论文+技术文档)

    项目描述 临近学期结束 xff0c 还是毕业设计 xff0c 你还在做java程序网络编程 xff0c 期末作业 xff0c 老师的作业要求觉得大了吗 不知道毕业设计该怎么办 网页功能的数量是否太多 没有合适的类型或系统 等等 这里根据疫情
  • 如何当个优秀的文档工程师?从 TC China 看技术文档工程师的自我修养

    本文系 NebulaGraph Community Academic 技术文档工程师 Abby 的参会观感 讲述了她在中国技术传播大会分享的收获以及感悟 据说 技术内容领域 传播领域的专家和决策者们会在中国技术传播大会 tcworld Ch
  • 制造行业主数据治理项目实施心得

    近期主要工作为北方某制造业主数据治理项目做实施服务 该项目从2020年9月份工作一直持续到今 涉及产品包括MDM主数据 ESB企业服务总线及UMC云管理平台三款产品 甲方主要需求为管理企业内部基础数据信息 创建组织 人员 岗位 客户 供应商
  • 软件项目的全生命周期

    就职于软件行业的人 无论是销售 售前 技术还是财务一定都会接触到关于项目运作相关的工作 不同职位的员工对于项目的关注点也大不相同 财务人员关注项目的收款节点 销售人员关注项目的商务关系及前期引导 实施人员关注项目的实施过程等等 这就造成各个
  • 服务器IO测试(Iozone使用)

    1 Iozone工具介绍 测试硬盘读写性能 Mb s 包括随机读写和顺序读写速度 Iozone设置块大小16M 文件大小为物理内存2倍 1倍 0 5倍三组数据 2 测试步骤 2 1 下载 wget http www iozone org s
  • ESB产品Oracle数据库升级说明

    ESB企业服务总线平台作为支撑企业综合集成的产品 在应用集成 数据集成 数据治理等解决方案都发挥着非常重要的作用 随着产品和解决方案的不断优化和升级 ESB企业服务总线平台功能需要逐步进行完善 不断提升产品功能的完备性 易用性和全面性 为了
  • 数据指标应用场景说明

    科技飞速发展的时代 企业信息化建设会越来越完善 越来越体系化 当今数据时代背景下更加强调 重视数据的价值 以数据说话 通过数据为企业提升渠道转化率 改善企业产品 实现精准运营 为企业打造自助模式的数据分析成果 以数据驱动决策 数据指标体系是
  • 安全体系建立标准

    随着我国企业信息化的普及 信息化给我国企业带来积极影响的同时 也带来了信息安全方面的消极影响 一方面信息化在企业发展的过程中 对节约企业成本和达到有效管理起到了积极的推动作用 另一方面伴随着全球信息化和网络化进程的发展 与此相关的信息安全问
  • C#中实现简单文件读写(附源代码)

    主要代码 using System IO Read File private void button1 Click object sender System EventArgs e try openFileDialog1 Filter tx
  • Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 报错

    核心错误提示 Dependency annotations org springframework beans factory annotation Autowired required true 项目环境描述 以spring spring
  • 系统监控脚本说明

    系统管理员的任务比较艰难 因为需要监控服务器 用户 日志 还得创建备份等 对于大多数重复性的任务 一般管理员都会写一个自动化脚本来完成这些任务 在以往运维中 查询系统 数据库等参数都比较困难 需要手动输入对应的命令 极其不方便 脚本也是我们
  • 制造行业主数据同步集成

    主数据是描述企业核心业务实体的数据 是企业核心业务的主要构成 各个订单 合同以及业务的主体 在企业内部被重复 共享应用的数据 主数据跨越企业各个业务部门以及各类业务系统 是应用系统间数据交互的基础 近期一直北方某制造业进行主数据治理工作 谈
  • Idea自带的http client工具使用攻略

    平时都是用postman来调接口 有时候也会用到swagger 用swagger还可以 直接在浏览器上开个页面即可 但是postman就不行了 需要单独的运行 个人感觉postman还是比较占内存的 最近和一个其他组同事联调 发现他们使用的
  • 集成底座POC方案说明

    企业的信息化建设是伴随企业发展不断延伸 不断升级的过程 而随着信息化体量的不断增大 复杂繁多的业务系统往往又成为信息化建设的瓶颈 而为了消除瓶颈 更便捷的打通系统的关联 针对企业实际业务建立集成底座平台则是非常有效的一种方式 通过集成底座打
  • python中各种文件类型的读写

    本文汇总了在python中各种类型文件的读取和写入 包含文本 图像 表格 log文件 pickle文件 npy文件 npz文件等 文本类型 txt文件 json文件 yaml文件 图像类型 使用skimage PIL opencv imag
  • httpip工具实践

    应用场景 jenkins在发布完成后需要请求一个接口验证数据 如果是正确的返回相应数据 采用传统的curl没有色差输出 不方便阅读 使用http命令结果会有色彩输出 方便阅读 安装方法 官网地址https httpie org CentOS
  • iOS开发之内存管理

    iOS开发之内存管理 一 垃圾回收机制 二 内存管理的概念 三 OC内存管理注意事项 四 MRC相关语法 一 垃圾回收机制 与Java语言相同Objective c 2 0之后 也提供了垃圾回收机制 OC是支持垃圾回收机制的 Garbage
  • ESB开发WebService接口

    1 概述 在进行系统间集成时经常利用WebService 但是从建立WebService和调用的重复性和维护性的工作量都相当大 首先简单介绍一下 ESB全称为Enterprise Service Bus 即企业服务总线 它是传统中间件技术与
  • 数据中台外部演示脚本

    作为一个以产品 方案为主要核心的公司 公司员工本身对于产品一定是不陌生的 但是做产品演示光了解产品是不够的 需要自身对演示过程反复的练习 能够突出产品的亮点 要能够调动客户的兴趣 在演示产品的同时还需要对行业内其它相同的产品有所了解 在演示

随机推荐

  • 代幣增發質押模式系統開發

    K means原理 K means 从字面看含有k和means两部分 K means算法会将样本量N特征数m的数据X 其中X是N m的矩阵 分到K个簇中 每个簇会有一个重心centroids 聚类效果的目标是通过计算簇中各个点到重心的距离平
  • 关闭cmd或其它win exe程序方法python

    import os def kill exe exe name os system taskkill f t im exe name MESMTPC exe程序名字 print 关闭进程 0 format exe name 例如 exe n
  • 一文搞懂MySQL索引(实现原理加优化实战,面试必问)

    前言 本篇文章从数据结构 B Tree的构建过程 MySQL索引实现 索引为什么那么快 MySQL有哪些索引 聚集索引和二级索引的区别 索引失效的原因 EXPLAIN关键字分析 索引实战 索引的优缺点 什么时候应该加索引 全方面帮助读者理解
  • Error in: PCL_DEPRECATED_HEADER(1, 15, “Please include pcl/common/io.h directly.“)

    error error expected constructor destructor or type conversion before token PCL DEPRECATED HEADER 1 15 Please include pc
  • 【Pip和Conda安装包的区别】

    Pip和Conda都是用于Python软件包管理的工具 但它们有以下区别 包管理器 Pip是Python的默认包管理器 而Conda是Anaconda发行版的包管理器 跨平台支持 Pip在各个平台上都可以使用 但是Conda特别适用于跨平台
  • VUE 出现登录界面但控制台报错FAILED TO LOAD RESOURCE: NET::ERR_CONNECTION_REFUSED

    首先 vue项目运行的端口号一般为8080 地址出现8080 1 2 说明8080端口被占用 导致vue项目在别的端口运行 但会与本地后台端口对应不上报如标题所示错误 解决方法 1 查看端口被哪个进程占用 输入命令 netstat ano
  • crm项目的搭建

    一 创建Maven项目 1 选择Maven下的 org jetbrains idea maven model Maven Archetype webapp 2 三板斧 坐标 GroupId com shsxt ArtifactId shsx
  • Fabric实战(13)Fabric链码调试(容器外)

    链码调试 本文章所有操作基于的操作系统版本是 ubuntu16 04 64位 本文章基于的Fabric网络环境是 Fabric实战 2 运行一个简单的fabric网络 容器外 1 开发环境链码调试 1 1 容器之外运行Chaincode 第
  • 开机出现start pxe over ipv4 /start pxe over ipv6无法进入系统?!

    我遇到的是戴尔电脑start pxe over ipv4 出现此类问题的原因 用户将win10系统装成win7后出现的 一般是由于在重装系统之前在BIOS中不小心设置错误所引起的 解决方法 方法一 1 首先进入bios 不同品牌按不同的热键
  • C# 通过 RabbitMQ 实现定时任务 (延时队列)

    环境准备 需要在MQ中进行安装插件 地址链接插件介绍地址 https www rabbitmq com blog 2015 04 16 scheduling messages with rabbitmq 使用场景 作为一个新的预支付订单被初
  • 部署SpringBoot项目到云服务器

    服务器选择以及项目背景 我购买的是阿里云ECS服务器 它的特点是可以给我们配置服务器较大的自由度 我选择的是Centos Linux操作系统 我这次是希望在服务器上部署一个SpringBoot后台项目 最后实现的效果是我可以在手机App上通
  • Vivado的一些tcl命令记录(待补充)

    1 Report Clock Networks report clock networks name network 1 2 分析设计中逻辑级数的分布 report design analysis logic level distribut
  • NLP(自然语言处理)是什么?

    NLP基本概念 自然语言处理 Natural Language Processing NLP 是以语言为对象 利用计算机技术来分析 理解和处理自然语言的一门学科 即把计算机作为语言研究的强大工具 在计算机的支持下对语言信息进行定量化的研究
  • simplest-jpa v1.2.0如何优雅实现多租户

    开始使用 simplest详细文档 simplest jpa 使用多租户需要 2 个步骤 在属性中配置对应租户表和列 配置 TenantFactory 注入租户数据源 TenantFactory 是用于生产租户 ID 的 或者说是用于获取当
  • idea 内存不足 low memory 彻底解决

    1 在IDE中 帮助 help gt 编辑自定义vm配置 idea64 exe vmoptions文件 修改 Xmx2048m Xms2048m 增加根据自己的系统内存 此时重启idea 仍然报内存不足 提示提高内存 通过idea log发
  • Loader Runner 课程笔记(一)录制设置和压测

    1 录制前设置 1 创建脚本 新建单协议脚本 选择Web协议 创建 LR11只支持WIN7系统 浏览器IE8 9和低版本的火狐 24 0或36 0 高版本IE可以卸载装IE8或9 不支持谷歌 LR自带火狐路径HP LoadRunner bi
  • 关于ECC-Elgamal同态加密

    关于ECC Elgamal同态加密 1 什么是ECC elliptic curve 1 有限域 首先我们要知道椭圆曲线加密是在有限域进行加密的 对于无限域上的加密我没有了解过 在椭圆曲线 加密上有限域分为 1 GF p 素数域2 GF 2
  • Python 爬虫案例

    一 用cookie池模拟登录 在网络请求交互中 为了维持用户的登录状态 引入了cookie的概念 当用户第一次登录某个网站时 网站服务器会返回维持登录状态需要用到的信息 这些信息就称为cookie 浏览器会将cookie信息保存在本地计算机
  • Intellij IDEA快速实现Docker镜像部署

    1 Docker开启远程访问 root izwz9eftauv7x69f5jvi96z docker vim lib systemd system docker service 修改ExecStart这行 ExecStart usr bin
  • python中各种文件类型的读写

    本文汇总了在python中各种类型文件的读取和写入 包含文本 图像 表格 log文件 pickle文件 npy文件 npz文件等 文本类型 txt文件 json文件 yaml文件 图像类型 使用skimage PIL opencv imag