Python(8):文件的IO读写操作(操作普通文件/csv/excel)

文章目录

  • 一、文件的IO读写操作
    • 1.常用的文件读取标志符
    • 2.普通文件的读操作
  • 二、csv文件的读写操作
    • 1.读取操作
    • 2.读取时候跳过某一行
    • 3.列表方式写入csv文件
    • 4.字典方式写入csv文件
  • 三、excel的数据操作(非pandas模块)
    • 1.读取excel的某个sheet的某一行的某一列
    • 2.追加数据到新文件

一、文件的IO读写操作

1.常用的文件读取标志符

标识含义
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
b可以在上述标识后边加b,表示字节层面,例如‘wb’,可以借助requests模块下载请求图片到本地

举个例子:

假设现在有个1.txt的文件
在这里插入图片描述
我们简单的读取一下

在这里插入图片描述
通常操作文件,我们会使用这种方式,可以不用关闭文件,是Python的一种简洁方式

在这里插入图片描述

2.普通文件的读操作

关于读文件有3种方式,这里说一下区别

方法作用
read1.读取整个文件,将文件内容放到一个字符串变量中。2.如果文件非常大,尤其是大于内存时,无法使用read()方法。3.read()直接读取字节到字符串中,包括了换行符
readline1.readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存 2.比readlines慢得多 3.readline() 读取整行,包括行结束符,并作为字符串返回
readlines一次性读取整个文件;自动将文件内容分析成一个行的列表。

二、csv文件的读写操作

1.读取操作

有一个示例文件,内容如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tLqWLmO4-1603958602468)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1603957345164.png)]

读取文件

import csv # 使用csv模块file_path = 'result.csv'# 读取csv文件
with open(file_path, 'r') as f:reader = csv.reader(f, delimiter=',')  # 默认的情况下, 读和写使用逗号做分隔符(delimiter)for row in reader:print(row)

结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-51uPXwkV-1603958602469)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1603957731518.png)]

2.读取时候跳过某一行

import csv
from itertools import islicewith open('2.csv', 'r') as f:reader = csv.reader(f)for row in islice(reader, 1, None): # 跳过表头的第一行print(row)

3.列表方式写入csv文件

这个是通过列表的方式进行写入,如果有标题,需要自己一一对应

import csvwith open('some.csv', 'w') as f:writer = csv.writer(f)writer.writerow(['1', '1', '1', '1'])writer.writerow(['2', '2', '2', '2' ])

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gvopptqw-1603958602470)(C:\Users\qinfan\AppData\Roaming\Typora\typora-user-images\1603958444732.png)]

问题: 发现每写完一行会加入一个空行

解决办法: Python3因此需要加入在open( )中增加一个参数newline=’’

import csvwith open('some.csv', 'w',newline='') as f:writer = csv.writer(f)writer.writerow(['1', '1', '1', '1'])writer.writerow(['2', '2', '2', '2' ])

在这里插入图片描述
Python2可以把w或者a改成字节存储,可以避免这个问题,这里我封装了一下python2的写入

def write_to_csv(file_path, row, fileheaders):with open(file_path, 'ab+') as f:f.write(codecs.BOM_UTF8)writer = csv.writer(f)if not os.path.getsize(file_path):writer.writerow(fileheaders)writer.writerow(row)print(row)

4.字典方式写入csv文件

import csvdata = [{'name': '张三', 'age': 15, 'sex': '男'},{'name': '李四', 'age': 12, 'sex': '男'},{'name': '彪子', 'age': 1, 'sex': '女'},
]keys = data[0].keys()  # 这里每行key相同,我随便取一行做表头with open('result.csv', 'w', newline='', encoding='utf-8') as f:writer = csv.DictWriter(f, fieldnames=keys)writer.writeheader()# writer.writerows(data) # 按顺序写全部writer.writerow(data[0])  # 只写一条

在这里插入图片描述

三、excel的数据操作(非pandas模块)

原文件
在这里插入图片描述

1.读取excel的某个sheet的某一行的某一列

import xlrdfile = 'demo.xlsx'
sheet_name='Sheet1'work = xlrd.open_workbook(file)
work_sheet = work.sheet_by_name(sheet_name)print(work_sheet.cell_value(2, 0))  # 读取第3行的第1列

在这里插入图片描述

2.追加数据到新文件

# coding: utf-8 import xlrd
from xlutils.copy import copyfile = 'demo.xlsx'
sheet_name = 'Sheet1'work = xlrd.open_workbook(file)
work_sheet = work.sheet_by_name(sheet_name)# 对数据表格进行复制
new_file = copy(work)
ws = new_file.get_sheet(0)# 往新表格写数据
ws.write(4, 0, '4')
ws.write(4, 1, 'Danny')# 保存
new_file_name = 'new_demo.xlsx'
new_file.save(new_file_name)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】stringstream

stringstream 定义于头文件 <sstream>&#xff0c;它其实是个别名&#xff0c;具体定义如下&#xff1a; typedef basic_stringstream<char> stringstream;<sstream> 定义了三个类&#xff1a;istringstream、ostringstream 和 stringstream&#xff0c;分别…

java数据结构与算法刷题-----LeetCode268. 丢失的数字

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 数学位运算 数学 解题思路&#xff1a;时间复杂度O( n n n)&…

锐腾授权世强硬创代理导热硅脂等热界面材料,最大化降低界面热阻

随着热界面材料下游新兴应用领域如数据中心、新能源汽车、可穿戴设备等的高速发展&#xff0c;其散热需求也将同步上升&#xff0c;国内热界面材料行业市场规模呈现上涨态势。 在此趋势下&#xff0c;国内锐腾新材料制造&#xff08;苏州&#xff09;有限公司&#xff08;下称…

从零到部署指南:Ubuntu上安装Boost和Crow库

1.安装boost 在安装Crow之前&#xff0c;需要确保您的系统中已经安装了Boost库。以下是Boost库安装步骤&#xff1a; 首先&#xff0c;从Boost官方网站或通过特定的链接下载Boost的源码&#xff0c;boost源码具体可参看这个链接&#xff1a; https://blog.csdn.net/duan199201…

vue3+高德地图+turfjs实现等压线,色斑图(用于显示气象,环境等地图场景)

首先是turf.js(英文官网),也有中文网不过也就目录翻译了一下. 高德官网自行获得key 使用turf的isobands api实现. 数据: 需要准备geojson格式经纬度信息业务值(比如温度,高度,光照只要是number值什么数据都可以) 国内各地区geojson数据点这里获得 参考的是这位大佬写的内容 我…

洛谷 - P1187 3D模型

3D模型 题目描述 一座城市建立在规则的 n m n \times m nm 网格上&#xff0c;并且网格均由 1 1 1 \times 1 11 正方形构成。在每个网格上都可以有一个建筑&#xff0c;建筑由若干个 1 1 1 1 \times 1 \times 1 111 的立方体搭建而成&#xff08;也就是所有建筑的底部…

Unity MySql安装部署与Unity连接 下篇

一、前言 上篇讲到了如何安装与部署本地MySql&#xff1b;本篇主要讲Unity与MySql连接、创建表、删除表&#xff0c;然后就是对表中数据的增、删、改、查等操作。再讲这些之前会说一些安装MySql碰到的一些问题和Unity连接的问题。 当把本地MySql部署好之后&#xff0c;我们可能…

uniapp 小程序获取WiFi列表

<template><view ><button click"getWifiList">获取WiFi列表</button><scroll-view:scroll-top"scrollTop"scroll-yclass"content-pop"><viewclass"itemInfo"v-for"(item, index) in wifiList&…

网络原理(应用层、传输层)

文章目录 一、应用层1.1 自定义协议1.2 通用协议XMLJSONprotobuf 二、传输层2.1 UDP协议2.2 TCP协议协议端格式及解析可靠性机制确认应答超时重传连接管理&#xff08;三次握手&#xff0c;四次挥手&#xff09;流量控制拥塞控制 效率机制滑动窗口延迟应答捎带应答 粘包问题TCP…

3月产品更新来袭,快来看有没你期待的功能

亮点更新一览 增强制作报表易用性&#xff0c;提升用户体验&#xff0c;如仪表盘图层锁定保持原有层级、即席查询支持批量选择表字段。 增强报表展示和分析能力&#xff0c;满足更多项目需求&#xff0c;如仪表盘表格支持配置是否显示分析菜单按钮、Web电子表格新增多选输入…

Unity(MVC思想)

MVC 一下演示使用MVC和不使用MVC的做法区别。 前两个没有使用MVC 主面板逻辑&#xff1a; mainPanel是该脚本名字 每个场景中不一定存在该面板&#xff0c;单纯的显隐需要去手动挂载过于麻烦。 所以自己读取创建面板出来(每个场景仅创建一次)&#xff0c;存下该面板&#xf…

车载平板丨车载数据终端是什么,如何在农机领域发挥作用

车载数据终端是指一种能够获取和处理车辆及其周边环境信息的设备&#xff0c;它集成了GPS导航、行车记录仪、车况诊断、通信等功能&#xff0c;能够实时监测车辆的位置、速度、行驶路线、油耗等数据&#xff0c;为车辆管理和运营提供数据支持。在农机领域&#xff0c;车载数据终…

C++ //练习 11.16 使用一个map迭代器编写一个表达式,将一个值赋予一个元素。

C Primer&#xff08;第5版&#xff09; 练习 11.16 练习 11.16 使用一个map迭代器编写一个表达式&#xff0c;将一个值赋予一个元素。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /*************************************…

负荷预测 | Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-BiGRU-Attention单输入单输出时间序列多步预测&#xff1b; 2.单变量时间序列数据集&#xff0c;采用前12个时刻预测未来96个时刻的数据&#xff1b; 3.excel数据方便替换&#xff0c;运行环境matlab…

Ant Desgin Vue Tree Tab 个性化需求

背景 个人对前端不是很熟&#xff0c;或者说过目就忘&#xff0c;但是对前端还要求不少&#xff0c;这就难搞了。 使用的前端是Mudblazor和ant design vue, Mudblazor 还没有开始搞&#xff0c;现在先用ant design vue&#xff0c;版本是vue3&#xff0c; ant design vue 4版…

OSPF 开放式最短路径优先协议

目录 技术产生原因&#xff1a;因为RIP存在不足 OSPF优点&#xff1a; RIPV2和OSPFV2比较&#xff1a; 相同点&#xff1a; 不同点&#xff1a; OSPF的结构化部署 --- 区域划分 区域划分的主要目的&#xff1a; 区域边界路由器 --- ABR &#xff1a; 区域划分的要求&am…

【静态分析】静态分析笔记03 - 数据流分析(应用)

参考&#xff1a; 【课程笔记】南大软件分析课程3——数据流分析应用&#xff08;课时3/4&#xff09; - 简书 ---------------------------------------------------------------------------- 1. 数据流分析总览 may analysis: 输出可能正确的信息&#xff08;需做 over-…

【感谢】心怀感恩,共赴知识之旅——致每一位陪伴我突破百万总访问量的您

小伙伴朋友们&#xff1a; 此刻&#xff0c;我怀着无比激动与深深感激的心情&#xff0c;写下这篇特别的博文。今天&#xff0c;我的CSDN总访问量成功突破了百万大关&#xff0c;这不仅是一个数字的跨越&#xff0c;更是你们对我的支持、信任与鼓励的有力见证。在此&#xff0…

C语言学习笔记之操作符篇

目录 算术运算符 移位操作符 整型在内存中的存储&#xff08;补充知识&#xff09; ​编辑左移操作符 右移操作符 位操作符 赋值操作符 复合赋值操作符 单目操作符 关系操作符 逻辑操作符 && 与 || 的计算特点 条件操作符 逗号表达式 下标引用操作符 函…

Canal 同步mysql 到es 日期格式报错解决

第一步&#xff1a;下载源码alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 (github.com) 第二步&#xff1a;编辑源码&#xff08;client-adapter下面的clinet-adapter.escore)&#xff1a; com.alibaba.otter.canal.client.adapter.es.core.support.ESSyncUt…