在Linux系统中,一切都是文件。但我们通常说的文件是保存在磁盘上的图片、文档、数据、程序等等。而在程序的IO操作中,很多时候就是从磁盘读写文件。本节我们讲解Python中的文件对象如何操作文件。

创建文件对象

通过Python内置函数open()可以很容易的创建一个文件对象。open函数有很多参数,最常用的有两个,使用open函数最常用的方法是:open(filename, mode)。

f = open('myfile', 'w')

第一个参数filename是文件名的字符串,比如myfile。第二个参数也是一个字符串,表示文件使用方式。mode的可选项如下:

mode

含义

"r’

以只读模式打开(默认)

"w’

以可写模式打开,并清楚文件内容(如果文件存在的话)

"x’

创建一个新文件并以可写模式打开

"a’

以可写模式打开,从文件末尾开始写入(如果文件存在的话)

"b’

二进制模式

"t’

文本模式(默认)

’+’

打开一个已存在文件以便进行更新(读和写)

其中的'b'和't'是指定文件内容是文本还是二进制,其它都说是关于读写方式的。

'b'是二进制模式打开文件,读写的数据都是字节对象(bytes),这个模式可以读写一切文件,包括文本文件,但读写文本文件时要注意编码的问题。

't'是文本模式下读写文件。读取时,默认会把平台特定的行结束符 (Unix 上的 , Windows 上的  )转换为 。写入是,默认会把出现的  转换回平台特定的结束符。这种默认的“幕后修改”对文本文件来说没有问题,但会破坏二进制数据(比如,JPEG或exe)文件中的数据。

在使用open创建文件对象时,最好使用 with 关键字。其好处是,当字句体结束后文件会正确关闭,即使在某个时刻引发了异常。并且with比等效的try-finally代码块更简短:

In [102]: with open('myfile') as f:

...: data = f.read()

...:

In [103]: f.closed

Out[103]: True

如果没使用with关键字,就要调用f.close()来关闭文件并立即释放它使用的系统资源。如果没有显示的关闭文件,Python的垃圾回收器最终将销毁该对象并为你关闭打开的文件,但这个文件可能会保持打开状态一段时间。另外一个风险是不同的Python实现会在不同的时间进行清理。

通过 with 语句或者调用 f.close() 关闭文件对象后,尝试使用该文件对象将自动失败。

文件对象的方法

通过上面的方法创建文件对象f后,,我们就可以通过其对应的方法读写数据了。

(1)写内容到文件:f.write(string)

把内容写入文件的方法是write()方法,传递的对象必须是字符串(文本模式下)或字节对象(二进制模式下)。如果要写入其它类型的对象(比如,字典、列表等等),就要先把它们转换成字符串(文本模式下)或字节对象(二进制模式下)。

In [109]: f = open('myfile', 'w')

In [110]: f.write('认真学Python,就是文件的全部内容。 ')

Out[110]: 21

In [111]: f.close()

(2)读取文件内容:f.read(size)

它会读取文件里面的数据并将其返回为字符串(在文本模式下),或者字节对象(二进制模式)。参数size是一个可选的整数参数,当size被省略或为负的时候,读取文件的全部内容;如果文件的大小是机器内存的两倍或更大,那么可能出现错误。读取并返回的size大小的内容。如果已经读完全部内容(到达文件末尾),将返回一个空字符串。

In [112]: f = open('myfile')

In [113]: f.read()

Out[113]: '认真学Python,就是文件的全部内容。 '

In [114]: f.read()

Out[114]: ''

f.readline() 从文件读取一行,换行符 留住字符串末尾;

f.readlines() 读取文件所有行,返回一个字符串的列表;

In [118]: f.readline()

Out[118]: '认真学Python,就是文件的全部内容。 '

In [119]: f.seek(0)

Out[119]: 0

In [120]: f.readlines()

Out[120]: ['认真学Python,就是文件的全部内容。 ']

遍历文件的所有行,也可以用遍历文件对象的方式,这是内存高效、快速并简单的方式:

In [122]: for line in f:

...: print(line)

...:

认真学Python,就是文件的全部内容。

(3)文件对象的位置

前面的例子中,我们已经读到文件的末尾,如果要再从头读的话就要调用f.seek(0)来设置文件对象的位置到文件开头。这个方法有两个参数:f.seek(cookie, whence=0)

cookie 是位置偏移量

whence 是相对位置,它有三种相对位置:

0 文件开头,偏移量是0或整数;

1 当前位置,偏移量可以是负数;

2 文件末尾,偏移量通常是负数;

如何查看当前位置呢?调用f.tell()方法。

python在读写文件之前需要创建文件对象-python基础教程:文件读写相关推荐

  1. python创建文件对象_python基础教程:文件读写

    在Linux系统中,一切都是文件.但我们通常说的文件是保存在磁盘上的图片.文档.数据.程序等等.而在程序的IO操作中,很多时候就是从磁盘读写文件.本节我们讲解Python中的文件对象如何操作文件. 创 ...

  2. python中修饰器的优点和作用_Python入门基础教程之装饰器

    Python装饰器的定义:在代码运行期间在不改变原函数定义的基础上,动态给该函数增加功能的方式称之为装饰器(Decorator) 装饰器的优点和用途: 1. 抽离出大量函数中与函数功能本身无关的的雷同 ...

  3. python基本对象_python基础教程:运算对象、运算符、表达式和语句

    编程的本质就是数据和运算,数据由基本数据类型.数据结构来表示,运算就是对这些数据的各种操作,基本的加减乘除.是非判断.流程控制等等.这些操作就是今天我们要讲的运算符.表达式和语句. 前面我们学习Pyt ...

  4. php读取doc pdf文件,PHP读取创建txt,doc,xls,pdf类型文件

    PHP读取或者创建txt,doc,xls,pdf各个类型文件的方法. php读取(文本.txt)文件: 一般是使用fopen.fgets的方法,例如: $fp=fopen('文件名.txt','r') ...

  5. 怎样把三维模型生成html文件,如何快速创建3D模型 并导出USDZ文件 在自己设备上浏览...

    文中视频演示了如何快速创建3D模型,将其导出为USDZ文件,并在自己的设备上进行浏览. 视频上传者表示,他希望说明如何轻松通过USDZ文件来分享3D内容.首先,你需要用于创建3D内容,同时最好具备将3 ...

  6. python脚本之家 包的创建和调用_python基础之包的导入和__init__.py的介绍

    调用同级目录: – src |– mod.py |– test.py 若在程序test.py中导入模块mod, 则直接使用 import mod 或 from mod import * 调用子目录下的 ...

  7. android文件存储教程,android开发基础教程—文件存储功能实现

    文件存储: public class MainActivity extends Activity { EditText mname, mage; TextView mtv; @Override pro ...

  8. 文件编码 linux,【原创】Linux基础之文件编码

    js 键盘记录实现(兼容FireFox和IE)(转) 主要分四个部分 第一部分:浏览器的按键事件 第二部分:兼容浏览器 第三部分:代码实现和优化 第四部分:总结 第一部分:浏览器的按键事件 用js实现 ...

  9. 【C语言】0基础教程——文件操作

    目录

  10. python rowcount_如何在ponyorm中创建rowcount?Python

    使用rowcount属性通常不是计算行数的正确方法.根据有关rowcount属性的SQLite文档, Although the Cursor class of the sqlite3 module i ...

最新文章

  1. pytest实战--参数化parametrize+前置fixture
  2. 程序员必备,新手也可以直接拿来用的jQuery万能代码段
  3. ThreeJS 屏幕坐标与世界坐标互转
  4. 页面添加复制代码功能
  5. swing组建的层次
  6. PHP操作MongoDB学习笔记
  7. mybatis There is no getter for property named 'xx' in 'class java.lang.String
  8. (https)nginx - tomcat(http)
  9. java容器类添加元素失败失败_java容器 Set
  10. 学python需要什么基础-要学 Python 需要怎样的基础?
  11. SQL中JOIN和UNION区别及用法
  12. 什么是GSD文件以及如何在STEP7和TIA博途中安装GSD文件?
  13. 独自封装windows 10系统详细教程(二)
  14. 阿铭Linux_公有云学习笔记20190116
  15. webpack2系列step1--HTML
  16. QT编程错误解决——error: no matching function for call to
  17. 【相机】工业相机必看的六大参数
  18. 文档在线化管理系统Confluce使用
  19. RGB-D、TOF深度相机的原理
  20. 喜讯丨zCloud 首批通过中国信通院数据库管理平台基础能力专项评测

热门文章

  1. windows下python3.5使用pip离线安装whl包
  2. 《web全栈工程师的自我修养》阅读笔记
  3. 自我学习SSM框架集成(二)
  4. Intellij 如何在新窗口中打开项目
  5. C# Attribute
  6. 检索所有课程都选修的的学生的学号与姓名
  7. MySQL执行计划解读
  8. 记录下openstack部署和使用时遇到的一些问题
  9. C#和Sql Server 2005中时间的最大值和最小值
  10. 把在win7系统下,把笔记本的无线网卡变成路由器,共享上网。