Python对文件的操作(转)

一、文件对象

我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作。

《Python 核心编程》上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听。

>>> f = open('demo.txt','r')
>>> f
<open file 'demo.txt', mode 'r' at 0x00CCCEC0>
>>> type(f)
<type 'file'>

二、相关函数

[1]、内建函数:open()

提供了初始化输入/输出(I/O)操作的通用接口,成功打开一个文件后会返回一个文件对象,否则发生IOError异常。语法如下:

file_object = open(file_name,access_mode = 'r',buffering = -1)

分析如下:

1):file_name:表示要打开文件名字的字符串,可以是相对路径也可以是绝对路径。
如:我在D盘新建一个空白名为out的文本文件,然后进行相关操作。

>>> f = open('../out.txt','w')
>>> f.write('good')
>>> f.close()

则打开该文件后,发现'good'已经写入进去了。

接下来使用绝对路径进行访问,如下:

>>> f = open('D:/out.txt','r')
>>> f.read()
'good'
>>> f.close()

2、可选变量access_mode也是字符串,代表文件打开模式。

注意:

1):使用'r'或'U'模式打开的文件必须已经存在

2):'w'模式打开的文件若存在则先清空,然后重新创建

3):'a'模式打开的文件是为了追加数据做准备的,所有写入的数据将追加到文件末尾。如果文件不存在,则自动被创建。

4):'+'代表可读可写

5):'b'代表二进制模式访问

6):默认情况下是 'r'

3、buffering可选参数,用于指示访问文件所采用的缓存方式。0表示不缓存;1表示只缓存一行,n代表缓存n行。如果不提供或为负数,则代表使用系统默认的缓存机制。

用处?这个麻烦有人能告诉我!

关闭文件:

打开文件消耗系统资源, 并且依赖于文件模式, 其它程序或许不能访问它们。这就是一旦操作完毕就该关闭文件的重要所在。

接上面的操作,加入还没有关闭:

复制代码

>>> f.closed  #判断是否关闭
False
>>> f.close() #关闭方法
>>> f.closed
True
>>> f.tell()  #如果已关闭,则一切针对文件操作都无效Traceback (most recent call last):File "<pyshell#27>", line 1, in <module>f.tell()
ValueError: I/O operation on closed file
>>> 

复制代码

[2]、工厂函数file()

与open()一样,可相互替换

>>> f = file('../out.txt','r')
>>> f.read()
'good'
>>> f.close()

三、相关方法

返回一个文件对象后(句柄),其实我也不清楚到底什么是句柄,这里摘自百度百科:

句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实 例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。

一般与文件相关的方法无非是:输入、输出、文件内移动、杂项

[1]、输入

1、read():读取字节到字符串中,有可选参数size,默认是-1,如果为-1或复数则文件将会被读取到文件末尾。

>>> f.read()
'good'
>>> f.read(2)
'go'

2、readline():读取文件的一行,包括行结束符。同read()也有个可选参数size。

3、readlines():读取所有(剩余的)然后将它们作为字符串列表返回,它有个可选参数sizhint代表返回的最大字大小。

>>> f = file('../out.txt','r')
>>> f.readlines()
['good']

[2]、输出

1、write():把含有文本数据或二进制数据块的字符串写入到文件中去。

2、writelines():针对列表操作,接受一个字符串列表作为参数,将它们写入文件,行结束符并不会被自动加入,如果需要的话必须在调用writelines方法前给每一行结尾加上结束符。

复制代码

>>> f =  open('d:/out.txt','w')
>>> f.writelines(['man'])
>>> f.close()
>>> f =  open('d:/out.txt','r')
>>> f.read()
'man'

复制代码

【注意:】

当使用read()或者readlines()从文件中读取行时,Python并不会删除行结束符,这个操作留给了程序员。

复制代码

>>> f.readlines()
['game is your life,game is your life,game is your life,game is your life,game is your life,[*]\n', 'game is your life,game is your life,game is your life[]']---------------------------
>>> f = open('demo.txt','r')
>>> data = [line.strip() for line in f.readlines()]
>>> data
['game is your life,game is your life,game is your life,game is your life,game is your life,[*]', 'game is your life,game is your life,game is your life[]']

复制代码

类似的,write()和writelines()也不会自动加入行结束符,应该自己添加。

>>> f = open('demo.txt','w')
>>> f.writelines([' my name is BeginMan\n,I like coding'])
>>> f.close()

打开该文件可查看:

[3]、文件内移动

tell()、seek()方法

复制代码

f = open('d:/out.txt','rb')
print f.tell()  #[1]
f.seek(10,1)    #[2]
print f.tell()  #10
print f.read(10)    # BeginMan,
print f.read(18)    #I like coding.
print f.tell()  #38"""
【1】:tell():
tell 方法确认了已经移到当前文件位置
一个文件对象维护它所打开文件的状态。文件对象的 tell 方法告诉你在打开文件中的当前位置。
因为我们还没有对这个文件做任何事,当前位置为 0,它是文件的开始处。
"""
"""
【2】:seek():
文件对象的 seek 方法在打开文件中移动到另一个位置。第二个参数指出第一个参数是什么意思:
0 表示移动到一个绝对位置 (从文件开始算起),
1 表示移到一个相对位置 (从当前位置算起),
还有 2 表示文件末尾
"""

复制代码

[4]、文件迭代

复制代码

>>> f = open('d:/out.txt','rb')
>>> for eachline in f:eachline'my name is BeginMan,\r\n'
'I like coding.\r\n'

复制代码

四、相关属性

file.closed:文件已被关闭,否则为False

file.mode:文件访问模式

file.name:文件名称

>>> f.mode
'r'
>>> f.name
'demo.txt'

FROM:http://www.cnblogs.com/BeginMan/p/3166644.html

转载于:https://www.cnblogs.com/rusking/p/5119796.html

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

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

相关文章

微软发布全新Win11 轻量级系统Validation OS

你可能还不知道&#xff0c;在没有任何公开宣传的情况下&#xff0c;在最近&#xff0c;微软最近发布了一个全新的操作系统 Microsoft Validation OS。根据微软的说法&#xff0c;这是一个轻量级、快速且可自定义的基于 Windows 11 的操作系统。专门为硬件或软件供应商、开发人…

梦回编程- 由LD_LIBRARY_PATH引发JNI的理解

前些天在配置通过OCI的方式连接Oracle中曾进碰到一个关于“java.lang.UnsatisfiedLinkError: no XXX in java.library.path”这么一个问题&#xff0c;这个问题纠结了许久才解决&#xff0c;解决方式参考前面的文章。趁双休日好好的理解一下产生这个问题的来龙去脉。先看一段话…

CSDN博客文章阅读模式插件(附源码)

插件地址&#xff1a;https://greasyfork.org/zh-CN/scripts/380667-csdn%E5%8D%9A%E5%AE%A2%E9%98%85%E8%AF%BB%E6%A8%A1%E5%BC%8F%E5%88%87%E6%8D%A2%E6%8F%92%E4%BB%B6 插件安装使用说明请参阅&#xff1a;https://greasyfork.org/zh-CN 浏览器&#xff08;正常&#xff09…

C语言试题六十一之请编写函数fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写函数…

【ArcGIS风暴】ArcGIS tif转jpg:JPEG压缩仅支持8位或16位无符号数据(具有一个或三个波段,且没有色彩映射表)解决方案!

扩展阅读:【ArcGIS风暴】ArcGIS支持的栅格数据格式大全及格式转换案例精解 文章目录 问题描述tif格式和JPEG格式详解ArcGIS软件tif转jpg方法总结问题描述 如下图所示,在ArcGIS中将tif格式的无人机影像数据导出为Jpg格式时,提示:JPEG压缩仅支持8位或16位无符号数据(具有一…

CF374 Maxim and Array

贪心 如果有0先变成非0 如果负数的个数 应该变为偶数 之后就是每次将绝对值最小的值加K #include<bits/stdc.h> using namespace std; const int MAXN 2e55; typedef long long ll;int N,K,X; ll A[MAXN]; int tag[MAXN]; struct Node{ll x; int id;Node(ll a0, int …

Blazor University (29)表单 —— 编辑表单数据

原文链接&#xff1a;https://blazor-university.com/forms/editing-form-data/编辑表单数据源代码[1]因为 EditForm 组件呈现标准的 <form> HTML 元素&#xff0c;实际上可以在我们的标记中使用标准的 HTML 表单元素&#xff0c;例如 <input> 和 <select>&a…

广州Uber优步司机奖励政策(1月4日~1月10日)

滴快车单单2.5倍&#xff0c;注册地址&#xff1a;http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单&#xff1a;http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里&#xff1a;http://www.cnblogs.com/mfry…

10 关联模型《ThinkPHP6 入门到电商实战》

一、什么是关联模型 关联模型指在 tp 中使用模型对多个数据表进行关联。例如一个主账户表与一个账户信息表进行关联&#xff0c;此时两者关联后可以更加简便的进行操作&#xff0c;使代码更加清晰&#xff0c;操作更加简便。 二、 正向一对一关联 一对一关联指的是数据只有一…

阿里云云计算ACP考试知识点(标红为重点)

阿里云云计算专业认证考试&#xff08;ACP&#xff09;&#xff08;ECS&#xff09; 什么是云服务器 ECS 云服务器 Elastic Compute Service&#xff08;ECS&#xff09;是阿里云提供的一种基础云计算服务。使用云服务器 ECS 就像使用水、电、煤气等资源一样便捷、高效。您无需…

C语言试题六十二之请编写函数fun除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字母,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 请编写函数…

Android 整体设计及背后意义

目录 1. Android设计的现实意义 1.1 发展的前提&#xff1a;硬件抽象 1.2 能力的枢纽&#xff1a;组件化 1.3 应用的基础-接口层 2. 对于我们的象征意义和实践 3. 小结 阿里妹导读&#xff1a;现实工作中经常可以听到这样的说法&#xff1a;框架的升级带来协议性能的提升…

数学的意蕴与价值(建议收藏)

数学的意蕴与价值,内容包括数学运算、长度面积等位换算等等,建议收藏。 意蕴1: 1x8+1=912x8+2=98123x8+3=9871234x8+4=987612345x8+5=98765123456x8+6=9876541234567x8+7=987654312345678x8+8=98765432123456789x8+9=987654321意蕴2: 1x9+2=1112x9+3=111123x9+4=11111234x9…

85、交换机安全MAC层***配置实验之Port-Security

1、Port Security解析触发Port Security的条件&#xff1a;未授权的MAC地址端口MAC地址数量超过了限制触发Port Security后的动作&#xff1a;protect Security violation protect mode 丢弃数据&#xff0c;不发送SNMP Trap消息 restrict Security violation restr…

C#-Linq源码解析之Concat

前言在Dotnet开发过程中&#xff0c;Concat作为IEnumerable的扩展方法&#xff0c;十分常用。本文对Concat方法的关键源码进行简要分析&#xff0c;以方便大家日后更好的使用该方法。使用Concat 连接两个序列。假如我们有这样的两个集合&#xff0c;我们需要把两个集合进行连接…

11 验证器《ThinkPHP6 入门到电商实战》

注&#xff1a;示例来源于官方手册 一、验证器定义 验证器用于对数据进行验证&#xff0c;你可以理解为一个“层”&#xff0c;在传入数据时可以使用这个层对数据进行验证&#xff0c;这样就可以不用频繁的在方法中编写代码去验证&#xff0c;只需要编写一个验证层即可&#…

合作开发和委托开发完成成果的归属

据专利法第8条的规定&#xff1a;“两个以上单位或者个人合作完成的发明创造、一个单位或者个人接受其他单位或者个人委托所完成的发明创造&#xff0c;除另有协议的以外&#xff0c;申请专利的权利属于完成或者共同完成的单位或者个人&#xff1b;申请被批准后&#xff0c;申请…

C语言试题六十三之请编写函数fun:将s所指字符串中ascii值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

1、 题目 请编写函数fun,其功能是:将s所指字符串中ascii值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 2 、温馨提示 C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您…

nginx+php

nginxphp基础架构 生产实践 nginx配置文件: 主配置文件 123456789101112131415161718192021222324252627282930313233[rootlinux-node1 conf.d]# cat /etc/nginx/nginx.conf user nginx;worker_processes auto;error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load…

【ArcGIS风暴】ArcGIS10.8中栅格数据金字塔的来龙去脉,你知道吗?

如下图所示,通常情况下,当将没有金字塔的栅格数据集添加至 ArcGIS时,系统将提示您构建金字塔。金字塔指不同比例下分辨率降低的数据概视图。金字塔十分有用,因为金字塔提升了分辨率低于其全分辨率的栅格数据集的绘制速度。建议构建用于大型栅格数据集的金字塔。 点击【是】…