Python学习week7-文件操作

1、文件IO常用操作

# 文件操作命令

2、打开操作open

# open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

创建并打开一个文件test,然后关闭;
打开一个文件,返回一个文件对象(流对象)和文件描述符。
打开文件失败,则返回异常;

touch test   #linux
#New-Item "new test.txt" -type File   #powershell 
f = open("test") # file对象
# windows <_io.TextIOWrapper name='test' mode='r' encoding='cp936'> 
# linux <_io.TextIOWrapper name='test' mode='r' encoding='UTF-8'> print(f.read()) # 读取文件
f.close() # 关闭文件

# open参数详解

①:file 打开或者要创建的文件名,如果不指定路径,默认是当前路径或者是文件描述符(整型)

②:mode模式:文件打开的模式。默认以文本只读 mode=rt的模式打开已经存在的文件;

③:文件指针:文件指针,指向当前字节位置;

# f.seek(offset,whence=0,/)  f 为文件对象,改变文件流的位置;offset表示相对于whence偏移了多少字节;

# whence 有三个值可选,分别表示不同的相对位置

  • 0,文件开头,默认为0;
  • 1,当前位置;
  • 2,文件末尾;

# 文本模式下:支持从开头向后偏移的。whence=1 表示从当前位置开始偏移,但是offset 只能为0,相当于原地不动。whence=2 表示从文本末尾开始偏移,offset 只能为0,seek 是按照字节偏移的;

# 1和2,在文本模式下,无法移动;1和2只有在字节模式下才能移动光标;

# 二进制模式下:默认whence=0,从文件开头开始,offset只能是正整数。whence=1,offset可正可负。whence=2,offset可正可负。二进制模式支持任意起点的偏移,向后seek可以超界,但是向前的seek不可以超界,否则抛出异常;

# 注意:seek移动,会自动调用flush;

④:缓冲区

# buffer缓冲区:缓冲区是一个内存空间,一般来说是一个FIFO队列,到缓冲区满了或者达到阈值的时候,数据才会flush 到磁盘中。flush() 将缓冲区数据写入磁盘close()关闭前会调用flush();

 

⑤:encoding

None 表示使用缺省编码,依赖操作系统。
windows默认是GBK(cp936)。
linux默认是UTF-8

⑥:其他参数

errors: 编码错误将被捕获,None和strict表示有编码错误将抛出ValueError错误,ignore表示忽略。

newline:

  文本模式中,换行的转换;

  可以为None,“空串”,'\r','\n','\r\n'

  读取时 None表示:'\r','\n','\r\n'都被转换为"\n";

  ’’表示不会自动转换通用换行符;

  其它合法字符表示换行符就是指定字符,就会按照指定字符分行 写 时,None表示’\n’都会被替换为系统缺省行分隔符os.linesep;’\n’或’’表示’\n’不替换;其它合法字符表示’\n’会被 替换为指定的字符。

  closefd 关闭文件描述符,True表示关闭它。False会在文件关闭后保持这个描述符。fileobj.fileno()查看;

3、read

# fileobj.read(size=-1, /)
size表示读取的多少个字符或字节;负数或者None表示读取到EOF;

# readline(size=-1)
一行行读取文件内容。size设置一次能读取行内几个字符或字节;

# readlines(hint=-1)
读取所有行的列表。指定hint则返回指定的行数;

4、write

# fileobj.write(s, /)
把字符串s写入到文件中并返回字符的个数。
writelines(lines),将字符串列表写入文件;

5、close

flush 并关闭文件对象。
文件已经关闭,再次关闭没有任何 效果;

6、上下文管理

# 对于一个打开的文件句柄,需要使用完后要关闭,不然就会浪费计算机资源;而关闭的方法:

①:手动关闭,f.close()

②:使用with...as语法,自动关闭;

  • 交给python解释器释放文件对象:
with open('a.txt',encoding='utf-8') as f:line=f.read()print(line)##############################

f=open('a.txt',encoding='utf-8')
with f:g=f.readline()print(g)

# 上下文管理的语句块并不会开启新的作用域;

# with语句块执行完毕,会自动关闭文件对象;

注意:对于类似于文件对象的IO对象,一般来说都需要在不使用的时候关闭、注销,以释放资源。 IO被打开的时候,会获得一个文件描述符。计算机资源是有限的,所以操作系统都会做限制。就是为了保护计算机 的资源不要被完全耗尽,计算资源是共享的,不是独占的。 一般情况下,除非特别明确的知道资源情况,否则不要提高资源的限制值来解决问题。

 

转载于:https://www.cnblogs.com/soulgou123/p/9724624.html

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

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

相关文章

风险定量分析工具 龙卷风图 决策树形图 蒙特卡洛模拟

龙卷风图&#xff1a;是项目管理中用于在风险识别和定性分析之后&#xff0c;进行定量风险分析的技术----敏感性分析技术中最常用的一种图表技术。 敏感性分析&#xff1a;敏感性分析有助于确定哪些风险对项目具有最大的潜在影响。它把所有其他不确定因素保持在基准值的条件下…

推土机:将JAXB对象映射到业务/域对象

Dozer是开放源代码&#xff08; Apache 2许可 &#xff09;“ Java Bean到Java Bean映射器&#xff0c;可将数据从一个对象递归复制到另一个对象”。 正如从其主页上的描述所描述的那样&#xff0c;它用于映射两个JavaBeans实例&#xff0c;以在实例之间进行自动数据复制。 尽管…

openssl不是内部或外部命令_OpenSSL新架构蓝图

概述日前OpenSSL官网公布了未来OpenSSL的架构蓝图。作为战略性的架构目标&#xff0c;需要大量的版本迭代本文档概述了OpenSSL战略架构。它需要多个版本的迭代从目前最新的版本1.1开始直到3.0甚至是4.0最终实现。由于版本架构变动非常大&#xff0c;涉及大量的变化和迭代&#…

休眠事实:始终检查Criteria API SQL查询

Criteria API对于动态构建查询非常有用&#xff0c;但这是我使用它的唯一用例。 每当您有一个带有N个过滤器且可以以任意M个组合到达的UI时&#xff0c;都有一个API动态构造查询是有意义的&#xff0c;因为串联字符串始终是我所不愿使用的路径。 问题是&#xff0c;您是否知道…

treegrid,可以展开的jqgrid树

效果图 html部分 <div class"padding20 bgWhite marginTop20"> <div class"cus-grid row" id"grid-wrap"> <div class"col-lg-12"> <table id"list2"></table> …

winfrom软件开发汽车测试_ETci — 全自动软件测试调度(持续集成)平台

ETci 提供了编译- 测试- 发布解决方案&#xff0c;包括&#xff1a;自动提取配置库代码进行自动构建, 自动调度静态测试工具(如QAC)进行静态测试&#xff0c;自动调度单元测试工具(如Tessy)开展动态测试&#xff0c;自动调度HIL 自动化测试系统等。使得开发、测试团队在软件开发…

在POJO中使用ThreadLocal的Java嵌套事务

大多数嵌套事务是使用EJB实现的&#xff0c;现在我们尝试在POJO上实现嵌套事务。 在这里&#xff0c;我们使用了ThreadLocal的功能。 了解嵌套事务 事务可以嵌套在另一个内部。 因此&#xff0c;内部事务或外部事务可以回滚或提交&#xff0c;而不会影响其他事务。 创建新事务…

HTML存储详解

和大家一起先来了解一下H5之前的存储方式&#xff1a; cookies的诞生&#xff1a; http请求头上带着数据大小只能为4K主Domain的污染 下面是百度的一些Cookies HTTP中带√的表示&#xff0c;只能被服务器端修改的数据&#xff0c;一般用来存储身份验证等信息 cookies造成了…

springboot 工程启动报错之Consider defining a bean of type ‘XXX’ in your configuration.

一、前言&#xff1a; 使用springboot自动注入的方式搭建好了工程&#xff0c;结果启动的时候报错了&#xff01;&#xff01;&#xff01;&#xff0c;错误如下图&#xff1a; Description:Field userEntityMapper in com.xxx.xxx.service.UserService required a bean of typ…

java 自定义报表_灵活数据分析 | 自定义数据分析_集力数据系统平台_Java报表系统软件...

灵活数据分析集力数据系统数据分析是立足于让终端用户即使不懂专业计算机技术也能即时定义报表和分析数据的工具。用户只需关心业务需要&#xff0c;无需关心技术实现&#xff0c;通过拖拖拽拽、点点选选即可轻松制作列表式报表、分组报表、交叉报表、自由报表、组合报表等并进…

(1-1)line-height的定义和行内框盒子模型

&#xff08;1-1&#xff09;line-height的定义和与行内框盒子模型的关系 一、line-height的定义 line-height的定义&#xff1a; 行高&#xff0c;又称为两基线的距离。默认基线对齐&#xff08;因为CSS所有*线&#xff1a;总之就是各种定义的线都是和基线对齐的&#xff09…

Java与本机代理–他们所做的强大功能

在安装代理之前应了解的内容以及它如何影响您的代码 在构建可伸缩的服务器端应用程序时&#xff0c;我们花费大量时间思考如何在生产中监视&#xff0c;操作和更新代码。 已经开发出一种新的工具来帮助Java和Scala开发人员做到这一点。 它们中的许多都是基于最强大的方法之一构…

pdf打印机安装程序_CAD快速出打印PDF格式文件

pdf最大的特点就是只能查看&#xff0c;不可编辑。我们肯定不能够直接给到客户CAD源文件&#xff0c;所以我们需要把CAD文件格式&#xff0c;转换成为PDF格式。PDF格式&#xff0c;比起CAD文件&#xff0c;能够更好的阅览CAD是不能够直接生成PDF格式的&#xff0c;所以我们需要…

javascript(1)

js是ajax/jquery/extjs的基础。 js的应用&#xff0c;比如百度地图网页版&#xff0c;用鼠标拖拽画面&#xff0c;然后画面会刷新&#xff0c;这就是用js实现的。 只要涉及到鼠标的响应&#xff0c;按键的响应都和js有关。 写网页版地图需要调用谷歌的api。 JavaScript所讲内容…

如何将html特殊字符编码转换成特殊字符_html十进制编码字符转回来

备注&#xff1a;有时候我们会莫名其妙遇到一些特殊字符&#xff1a; 这些字符在网页上能正常显示&#xff0c;但是在APP特殊情景并不识别这些字符&#xff1a; 如&#xff1a; 这个其实是单引号: 百度后发现&#xff0c;它其实是HTML特殊字符的十进制编码&#…

sap生产工单报工_【案例】MES系统助力亨通电缆车间生产效率提升25%

一、企业简介江苏亨通电力电缆有限公司是亨通集团旗下的一家重点高新技术企业&#xff0c;于2003年在上交所成功上市&#xff0c;属于上市公司的电力传输板块。公司目前已拥有超高压电力电缆、超高压海缆、中低压电力电缆、电气装备用电缆、特高压导线、电力光缆以及铜铝加工等…

想要更快地使用AtomicLong? 等待它。

我经常听到Java原子类型&#xff08;java.util.concurrent.atomic&#xff09;超级快&#xff0c;可以很好地与高度并发的代码一起使用。 在大多数情况下&#xff0c;原子以健壮和高效的方式发挥作用。 但是&#xff0c;在某些情况下&#xff0c;原子类型上非托管争用的隐藏成本…

java获取页面标签_java获取网页源代码后,提取标签内容……

java获取网页源代码后&#xff0c;提取标签内容……关注:245 答案:2 mip版解决时间 2021-02-01 09:11提问者咏b琂败2021-01-31 13:49import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.ne…

scrapy安装_爬虫框架Scrapy简介与安装

Scrapy 框架Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架&#xff0c;用途非常广泛。框架的力量&#xff0c;用户只需要定制开发几个模块就可以轻松的实现一个爬虫&#xff0c;用来抓取网页内容以及各种图片&#xff0c;非常之方便。Scrapy 使…

汇编语言的基础知识

汇编语言是在硬件上工作的编程语言&#xff0c;我们需要了解硬件系统的结构&#xff0c;才能有效的用汇编语言对其进行编程。 一&#xff1a;汇编语言的组成 1&#xff09;汇编指令&#xff1a;机器码的助记符&#xff0c;有对应的机器码。 2&#xff09;伪指令&#xff1a;没有…