打开文件对象

在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:

file object = open(file_name [, access_mode][, buffering])

file_name:file_name参数是一个字符串值,指定要访问的文件的名称。

access_mode:access_mode确定文件打开的模式,即读取,写入,追加等。

buffering:如果buffering值设置为0,则不会发生缓冲。如果缓冲值buffering为1,则在访问文件时执行行缓冲。如果将缓冲值buffering指定为大于1的整数,则使用指定的缓冲区大小执行缓冲操作。如果为负,则缓冲区大小为系统默认值(默认行为)。

不同模式打开文件的完全列表:

模式描述

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

模式如下图所示:

操作文件对象的方法

假设已经创建了一个称为 f 的文件对象,新建一个test.txt

f.read()

为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。

size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。

f = open("./test.txt","r")

str=f.read()print(str)

输出:

hello,world!

thisis a test file.

f.readline()

f.readline() 会从文件中读取单独的一行。换行符为 ' '。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。

f = open("./test.txt","r")

str=f.readline()print(str)

str=f.readline()print(str)

输出:

hello,world!

thisis a test file.

f.readlines()

f.readlines() 将返回该文件中包含的所有行。

f = open("./test.txt","r")

str=f.readlines()print(str)

输出:

['hello,world! ', 'this is a test file. ']

f.tell()

f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。

f.seek()

如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。

from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:

seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符

seek(x,1) : 表示从当前位置往后移动x个字符

seek(-x,2):表示从文件的结尾往前移动x个字符

from_what 值为默认为0,即文件开头。

f.write()

f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。

f.close()

在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。

当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。

当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。

with 关键字

当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。

with open('/tmp/foo.txt', 'r') as f:

read_data= f.read()

python文件对象提供了3个读方法、分别是-python3 IO编程:文件读写相关推荐

  1. python文件对象提供了3个读方法、分别是-Python读写文件模式和文件对象方法实例详解...

    本文实例讲述了Python读写文件模式和文件对象方法.分享给大家供大家参考,具体如下: 一. 读写文件模式 利用open() 读写文件时,将会返回一个 file 对象,其基本语法格式如: open ( ...

  2. python文件对象提供了3个读方法、分别是-python3基础之文件对象操作

    1.向文本文件中写入内容 s = 'Hello world 文本文件的读取方法 文本文件的写入方法 ' # 需要写入文件的字符串 print('显示需要写入的内容: {0:s}'.format(s)) ...

  3. Python IO编程——文件读写

    1.1   文件读写 1.1.1   读文件 >>> f = open('/root/python/hello.py','r')    #标识符r表示读 >>> f ...

  4. python学习——IO编程——文件读写

    python--IO编程--文件读写 IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动.Input Stream就是数据从外面(磁盘.网络 ...

  5. python写对象提供的方法_下面哪些是python读对象提供的“写”方法?

    [简答题]土的物理性指标中六个换算指标是哪些? [判断题]定义毛坯中,常用的形状有多边体.长方体.圆柱体. [单选题]_______ difficult questions they are! I c ...

  6. Python学习(九)IO 编程 —— 文件夹及文件操作

    Python 文件夹及文件操作 我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数. os 可以执行简单的文件夹及文件 ...

  7. 文件损坏怎么修复?3种方法帮您恢复损坏的文件

    案例:文件损坏还可以修复吗?文件损坏怎么修复? "救命!!!我的视频文件系统损坏,且没有办法读取.试了很多方法,但是都没有成功.想问各位大神,还有什么好用的方法吗?" 文件损坏是我 ...

  8. command对象提供的3个execute方法是_并发面试题:java中有几种方法可以实现一个线程?...

    创建并启动线程的6种方式 继承Thread类创建线程 实现Runnable接口创建线程 使用Callable和FutureTask创建线程 使用线程池,例如用Executor框架 Spring实现多线 ...

  9. command对象提供的3个execute方法是_Python:3分钟看懂,基于 Psycopg2 的 PostgreSQL 操作指南!

    本Python PostgreSQL教程演示了如何使用PostgreSQL数据库服务器开发Python数据库应用程序.在Python中,我们有用于连接和使用PostgreSQL的serval模块.以下 ...

最新文章

  1. php ile_get_contents无法请求https连接的解决方法
  2. gradle仓库配置
  3. DSP F28335的SCI模块
  4. FFmpeg数据结构:AVPacket解析
  5. 基本数据类型包装类的使用与转换
  6. 【C#】[窗体]渐变窗口背景
  7. C++ 自旋锁简单实现
  8. Win10 系统字体美化
  9. MediaType和文件类型对应关系
  10. USB 协议Audio应用
  11. 质量管理:PDCA循环
  12. 问卷调查报告html,问卷调查报告格式优秀范文
  13. char在计算机中是什么作用,C语言中char的用法
  14. Rails Controller中的concerns测试编写
  15. XUL 用户界面语言介绍
  16. Phun一个有意思的程序
  17. BZOJ 5293 求和(LCA)
  18. Mysql数据库查询去除重复_mysql数据库如何去重复数据
  19. C语言关键字浅析-return
  20. 想要不被裁,看一看 13 年华为老兵的宝贵经验

热门文章

  1. 请问anroid怎么播放aac文件。
  2. 实验二十二 SCVMM中的SQL Server配置文件
  3. 资深专家给.NET初学者的学习建议(转)
  4. Paddington2
  5. 基础二(格式化字符串、运算符和编码)
  6. 转:delphi用URLDownloadToFile下载文件,用进度条跟踪下载进度
  7. CSS布局--head区的其他设置
  8. 反流技术之IE插件技术研究
  9. python创意小作品代码-Python学习,给自己的代码做个合集,定制自己的桌面软件!...
  10. 零基础代码学python-零基础学python之构建web应用(入门级)