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,一经查实,立即删除!

相关文章

将一个实体转换成 Url 参数的形式 ?a=ab=b

function toQueryString(obj) { var ret []; for (var key in obj) { key encodeURIComponent(key); var values obj[key]; if (values && values.constructor Array) { //数组 var queryValues []; for (var i 0, len values.length, value; i < len; i ) …

Spring Boot –现代Java应用程序的基础

Spring Boot是Spring.io中一个相对较新的项目。 其目的是简化创建新的基于Spring Framework的项目&#xff0c;并通过应用一些约定来统一其配置。 这种关于配置的方法约定已经成功地应用于大多数所谓的现代Web框架中&#xff0c;例如Ruby on Rails&#xff0c;Django或Play&…

python qt快速入门_PyQt5快速入门(一)

PyQt5快速入门(一)前言为什么选择PyQt5作为GUI框架?API与Qt一致, 学会PyQt后再使用qt很简单开发迅速, 可视化操作,使用designer快速拖拽布局进行调试可以将文件打包成exe进行发布本节课内容(假设已经掌握python语法)搭建PyQt5环境测试PyQt5环境本节课使用环境python 3.6.6IDLE…

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

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

java 先序遍历_二叉树的前序中序后序遍历(java代码)

importjava.util.*;public classtraversal {public static voidmain(String[] args) {List listnewArrayList<>();//构造二叉树TreeNode treeNode6newTreeNode(2,null,null);TreeNode treeNode5newTreeNode(1,null,null);TreeNode treeNode4newTreeNode(7,null,null);Tre…

js正则验证方法大全

/* 用途&#xff1a;检查输入手机号码是否正确 输入&#xff1a; s&#xff1a;字符串 返回&#xff1a; 如果通过验证返回true,否则返回false */ function checkMobile(s) { var regu /^[1][3][0-9]{9}$/; var re new RegExp(regu); if (re.test(s)) { return true; } els…

使用CLI设置WildFly绑定地址并关闭

仅使用命令行参数将WildFly绑定到主机名/ IP上非常容易。 我有一个简单的GNU / Linux盒子&#xff0c;可以用它玩各种东西&#xff0c;其中之一就是WildFly。 我使用以下命令开始在特定IP上监听WildFly&#xff1a; $> cd /opt/wildfly/wildfly-8.0.0.Beta1/bin $> ./s…

JS基本数据类型

基本数据类型&#xff1a; Undefined&#xff0c;null&#xff0c;boolean&#xff0c;number&#xff0c;string symbol&#xff08;ES6&#xff09; 复杂数据类型&#xff1a; object undefined: 变量声明未初始化&#xff0c;自动为undefined typeof 操作符检测变量数据类型…

用python自制背单词程序_c++自制背单词应用

文件结构&#xff1a;背词历史.log 用来存放背过的单词&#xff0c;存放的格式是年-月-日 时&#xff1a;分&#xff1a;秒单词 词性 中文解释生词本.txt 用来存放当下要背诵的单词列表&#xff0c;格式是单词 词性 中文解释历史记录.txt 用来当做按照时间查询生词的缓存&#…

mongodb lbs java_LBS JAVA Spring mongoDB

基本介绍位置服务(LBS)解决的主要问题是当前位置周围某个范围内的人或场所.在传统的解决方案,开发人员需要根据复杂的几何运算与大量的SQL语句进行查找,这无疑加大的开发人员的开发难度.现在我们需要更为方便的解决方案,MongoDB为我们完美解决此类LBS问题.此篇文章也主要使用Sp…

让height: 100%生效

html&#xff1a; <body><div class"box"></div> </body> css&#xff1a; .box{position: fixed;// 使用fixed定位width: 100%;height: 100%;background: orange;} 补充&#xff1a; &#xff08;父元素不设高度&#xff0c;如何让子元素高…

hash

HashSet Set接口&#xff0c;元素不能重复&#xff0c;要确保重写hashCode&#xff08;&#xff09;方法和equals&#xff08;&#xff09;方法&#xff0c;这样才能比较对象的值是否相等HashMap Map接口&#xff0c;key可为null线程安全ConcurrentHashMap&#xff08;Map接口&…

推土机:将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;涉及大量的变化和迭代&#…

eclipse安装Hadoop-0.20.2插件

因为在使用Hadoop-0.20.2这个古董&#xff0c;需要使用它自带的eclipse插件&#xff0c;而我最初安装的是现代的eclipse4.10.0。 在经历两天&#xff0c;以及以下种种尝试之后&#xff0c;均以失败告终&#xff1a; 1.网上找适合的版本&#xff0c;据说有人编译好的hadoop-0.20…

java setcontenttype_response.setContentType()在Java过滤器中重置

我试图在过滤器中将压缩文件的内容类型设置为正确的mime类型&#xff0c;而不是application / gzip。这是我的一些代码&#xff1a;public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, Serv…

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

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

JS基础(一)

1、JS脚本放置位置 页面内的JS脚本中&#xff0c;各种公共函数和变量应放在head标签之间&#xff0c;而将页面加载期间执行的代码、dom对象初始化以及与dom相关的全局引用赋值操作放在body标签之间&#xff0c;如果没有特殊要求&#xff0c;不妨放在body标签之前。 2、js命名…

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 自动化测试系统等。使得开发、测试团队在软件开发…