python 与其他语言相比,操作文件非常方便,提供了良好的API.

Open函数

python是以文件对象的方式来操作文件,操作文件之前首先要打开文件产生一个文件对象,以便进行后续操作。

open()函数:

open(file, mode='r')

一般操作文件主要以一个或者两个参数为主,一个是文件名,一个是打开对象权限。

open()函数的全部语法为:

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

参数说明:

file:为必须的,文件名(可以带绝对路径或者相对路径)

mode:可选的,文件打开模式或者权限

buffering:设置读写缓冲

encoding:一般使用utf8,文件编码格式

errors:报错级别

newline:区分换行符

closefs:传入的file参数类型

opener:文件打开者

其中mode参数较多有如下:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

File对象

open创建完文件对象之后,提供如下操作:

序号 方法及描述
1

file.close()

关闭文件。关闭后文件不能再进行读写操作。

2

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False。

5

file.next()

Python 3 中的 File 对象不支持 next() 方法。

返回文件下一行。

6

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

7

file.readline([size])

读取整行,包括 "\n" 字符。

8

file.readlines([sizeint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

9

file.seek(offset[, whence])

设置文件当前位置

10

file.tell()

返回文件当前位置。

11

file.truncate([size])

从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。

12

file.write(str)

将字符串写入文件,返回的是写入的字符长度。

13

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

例子

以书本中的第16个用例为主,读写一个文件,将文件内容清空,并输入新的文件内容:

from sys import argvscript, filename =  argvprint(f"We're going to erease {filename}")
print("If you don't want that, hit CTRL-C")
print("If you do want that, hit RETURN.")input("?")print("Opening the file...")
#打开文件,如果没有则创建一个
target = open(filename, 'w')print("Truncating the file. Goodbye!")#清除文件
target.truncate()#分别输入三行内容
line1 = input("Line 1: ")
line2 = input("Line 2: ")
line3 = input("Line 3: ")print("I'm going to write these to the file.")#将三行内容写入到文件中
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")print("And finally, we close it.")
#最后关闭文件
target.close()

运行结果:

参考资料

https://www.runoob.com/python3/python3-file-methods.html

笨方法“学习python笔记之文件操作相关推荐

  1. 笨方法“学习python笔记之print()函数end

    在<"笨方法"学习python>中的第7个习题中的用例代码中有print()函数的end用例 代码如下: end1 = "C" end2 = &qu ...

  2. 笨方法“学习python笔记之urlopen

    最近在学习"笨方法"学python中,在习题41中发现了urlopen()函数,特意查了下官方资料,查资料最好查官方资料,最好不要做"百度君".urlopen( ...

  3. 笨方法“学习python笔记之输入

    Python程序输入和其他语言一样,主要有三种方式 1:常用的 使用input()函数,作为程序的输入 例子就采用<"笨方法"学python>中的第·12个习题作为例子 ...

  4. “笨方法”学习Python笔记(1)-Windows下的准备

    Python入门书籍 来自于开源中国微信公众号推荐的一篇文章 全民Python时代,豆瓣高级工程师告诉你 Python 怎么学 问:请问你目前最好的入门书是那本?有没有和PHP或者其他语言对比讲Pyt ...

  5. 笨方法“学习python笔记之元组(tuple)

    Tuple(元组)是python的基本序列三种类型之一(另外两种是List, Range),是"笨方法"学python3中没有讲到的数据类型,因此专门查了下官方资料,中可以查找到对 ...

  6. 笨方法“学习python笔记之字典

    列表是线性存储,且可以随机访问,且是有序的,其访问可以通过索引来访问.而字典是另外一种存储数据,可以通过建立键和值的映射关系,就和查字典差不多,通过键就可以查找到相对应的值 字典创建 字典创建过程中每 ...

  7. 笨方法“学习python笔记之字符串

    字符串(str)是python的一种重要的数据格式,官方文档中对字符串的解释为一种文本序列格式,其内容不可修改(有点类似元组),官方解释如下: 字符串表示 可以看到官方文档里面,给出了字符串的三种表示 ...

  8. 笨方法“学习python笔记之print换行

    python中 print()函数打印换行有几种 方法: 1:第一种方法是使用多个print打印,多个print默认换行 例子 print("Hello world") print ...

  9. “笨方法”学习Python笔记(2)-VS Code作为文本编辑器以及配置Python调试环境

    Visual Studio Code 免费跨平台文本编辑器,插件资源丰富,我把其作为Debug的首选. 下载地址:https://code.visualstudio.com/Download 安装之后 ...

最新文章

  1. [置顶] 贝叶斯分类(一)
  2. java commons-chain_Apache commons chain 初探
  3. IDEA的查询引用、调用关系图的功能
  4. uni-app自定义tabBar;uni-app小程序自定义tabBar;uni-app小程序修改中间tabBar导航栏大小;uni-app中间导航栏凸起;uni-app修改底部导航栏
  5. PAT1103 Integer Factorization (30)(DFS:回溯)
  6. python头文件库_跟老齐学Python之不要红头文件(1)
  7. 使用回收站主键名、索引名问题
  8. RecyclerView的各种版本兼容问题处理集锦
  9. 深度剖析Java数据结构之迭代器(Iterator)
  10. CentOS安装系统时硬盘分区建议
  11. Angular2 的 View Encapsulation(样式封装)
  12. 代码 设为主页 加入收藏 代码
  13. 传智播客杨中科老师的全13季 C#、Asp.net视频教程
  14. mumu 模拟器连不上adb
  15. 微信小程序毕业设计 就餐预约点餐小程序毕业设计
  16. Win11 如何跳过微软注册界面
  17. DNS域名解析详细说明
  18. 呜呜。平安夜没有苹果
  19. android 定时打开app,如何 定时启动你的Android App
  20. 重复高斯勒让德法则(gauss-legendre)求积分(python,数值积分)

热门文章

  1. JEECG前后端分离UI框架实战抢先体验(ng2-admin+Angular4+AdminLTE+WebStorm)
  2. Memcached学习一:Memcached安装使用
  3. SpringCloud微服务:Ribbon和Feign组件,实现服务调用的负载均衡
  4. AutoKeras使用
  5. 2.3Python基础语法(三)之输入输出
  6. RDS For SQL Server链接服务器
  7. php序列化和反序列化
  8. 5.Servlet 对象(request-response)
  9. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(二)-Hexo参数设置
  10. iOS开发之网络编程--6、NSURLSessionConfiguration笔记