在计算机系统中,以硬盘为载体存储在计算机上的信息集合称为文件。文件可以是文本文档、图片、声音、程序等多种类型。在编程时经常要对文件进行读写等操作, 从程序员的视角可以把文件理解为是连续的字节序列,进行数据传输需要使用字节流, 字节流可以是由单个字节或大块数据组成。文件类型通常分为文本文件和二进制文件。

文件操作

在 Python中对文件进行操作分为3个步骤,首先要打开文件,然后是对文件进行读写操作,最后需要关闭文件。

打开文件---open函数

你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

语法:

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

各个参数的细节如下:

file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。

access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

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

模式图如下:

File对象的属性

一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。

以下是和file对象相关的所有属性的列表:

关闭文件---close()方法

File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

语法:

fileObject.close()

例子:

python代码如下:

f = open(‘练习.txt‘,‘w‘,encoding=‘utf-8‘) #写文件

...

f.close()

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘) #读文件

...

f.close()

向文件写数据--- write()方法

write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

write()方法不会在字符串的结尾添加换行符(‘\n‘):

语法:

fileObject.write(string)

例子:

python代码如下:

f = open(‘练习1.txt‘,‘w‘,encoding=‘utf-8‘)

f.write("我是中国人\n")

f.write("我爱自己的祖国\n")

f.write("我爱北京天安门\n")

输出结果:

从文件读数据

file.read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

语法:

file.read([count])

例子:

原文件(练习.txt)

读文件代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

print(f.read(1))

print(f.read(10))

输出结果:

使用file.readline()可以读取一行数据,同样是返回一个字符串

例子:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

print(f.readline())

输出结果:

file.readline()括号里面加数字,表示读取字符串个数

例子:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

print(f.readline(1))

输出结果:

file.readlines剩余行数据,返回的是一个字符串列表

例子:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

print(f.readlines())

输出结果如下:

file.readlines()括号里面加数字,表示读取字符串个数,还有当前行剩余的也读出来

例子1:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

print(f.readlines(1)) #表示打印第一个字符串所在的那一行

输出结果如下:

例子2:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

print(f.readlines(7)) #表示打印第7个字符串所在的那一行及前面的所有行

输出结果如下:

注意:read()读取的方式是读取所有数据,放到内存中,这样很占内存,而且效率低小,这里推荐文件迭代器

文件迭代器

从 Python2.2开始,引进了迭代器和文件迭代,使文件操作更加高效,不需

调用 read()方法。简单说,迭代就是在for循环中读取每一行数据,示例代码如下:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

for line in f.readlines():

print(line.strip())

输出结果:

注意事项:

以写方式打开文件时,不支持读操作。但是还有其他几种模式存在,使用 r+、w+、或a+ 方式打开文件,可以同时进行读写操作。

r+ 表示不清除原文件内容,读写方式打开,而新添加的数据在文件尾部。

w+ 表示清除原文件内容,写读方式打开,读不到原文件的内容。

a+表示把文件指针移到文件末尾,在文件末尾可以继续写数据,读数据不受影响。

文件定位(文件指针)

tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。

seek(offset [,from])方法改变当前文件的位置。

Offset变量表示要移动的字节数。

From变量指定开始移动字节的参考位置。

如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

例子:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

print(f.readline()) #打印的一行

f.seek(0) #指针返回原点

print(f.tell()) #获取当前指针位置

print(f.readline()) #再打印一行

输出结果如下:

修改文件

1.把文件都加载到内存里面,在修改,如vim修改文件

备注:这种方式会覆盖掉原文件,而且不适合修改大文件,太消耗系统内存了,不推荐!

2.读取原文件,在修改相应文件,生成到新文件中。(推荐使用)

例子:

python代码如下:

f = open(‘练习.txt‘,‘r‘,encoding=‘utf-8‘)

f_new =open(‘练习2.txt‘,‘w‘,encoding=‘utf-8‘)

for line in f:

if "宋代:孙洙" in line:

line = line.replace("宋代:孙洙","宋代:词人") #将"孙洙"替换成"词人”

f_new.write(line)

f.close()

f_new.close()

输出结果如下:

with使用

有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。

例子:

python代码如下:

with open(‘练习.txt‘, ‘r‘, encoding=‘utf-8‘) as f:

for line in f.readlines():

print(line.strip())

输出结果如下:

file 对象内建方法:

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

总结:

1.本博客参考了菜鸟基础和自己动手操作写出的。

2.python2 和python3 是不一样,这里是python3操作文件方法。

3.python操作文件是一种很常用的方法,要经常动手操作,才能掌握知识点!

原文:https://blog.51cto.com/13760351/2442274

python提供了3个常用的读文件函数、分别是,Python3 对文件操作相关推荐

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

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

  2. [python]开发IC utility 一些常用的方法和函数和语法规则

    文章目录 字符串的replace 字符串的split 字符串的strip 循环for in 判断语句中的and not re.search与re.match 合并元素为一个字符串 判断提供的path是 ...

  3. Python初级学习教程—从入门开始学习(函数、组合数据类型、文件操作、异常、模块)

    文章目录 入门 一.数据的相关操作 二.continue 和 break的区别(易混点) 三.函数 变量的作用域 三.函数进阶 1.函数多个返回值 2.函数参数种类 3.匿名函数 组合数据类型 一.列 ...

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

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

  5. Python罕见的但是却常用的内置函数

  6. C语言read()函数:读文件函数(由已打开的文件读取数据)

    相关函数:readdir, write, fcntl, close, lseek, readlink, fread 头文件:#include <unistd.h> 定义函数:ssize_t ...

  7. python常用字符串处理函数_Python第10课:常用的字符串处理函数

    Python第10课:常用的字符串处理函数 时间 2019-01-17上午10:00 主讲 刘培富 地点 四楼电教室 1.字符的ascii码及其逆运算 ord("x") 求asci ...

  8. 用python提取发票扫描件常用的10多个发票信息保存到excel表

    用python提取发票扫描件常用的10多个发票信息 #输出所有文件和文件夹 如何将发票扫描将中常用的10-20个信息提取到excel表格中,用python提取是不错的方法. 1.用python提取发票 ...

  9. 用c语言对文件的写入和保存,C++_C语言中对文件最基本的读取和写入函数,C语言read()函数:读文件函数( - phpStudy...

    C语言中对文件最基本的读取和写入函数 C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include 定义函数: ssize_t read(int fd, void * buf ...

最新文章

  1. 3、LVS_TUN实现负载均衡
  2. Grid SearchCV(网格搜索) 用法代码演示
  3. PMP考前复习题 系列三
  4. Windows 10 Technical Preview 安装体验及变化
  5. 提交代码前问自己七个问题!
  6. GridSearchCV和交叉熵
  7. java怎么表示正无穷大_有什么比无穷大更大,比无穷小更小?
  8. CCNA-第十一篇-VTP+STP(上)
  9. 绝地求生7月5日服务器维护,绝地求生7月5日更新到几点 吃鸡更新维护公告
  10. 奖金15万,百度携手CCF打造CV+NLP双赛题
  11. dubbo服务压力测试
  12. 数学建模:层次分析法
  13. python离线语音识别_python语音识别模块
  14. 韦东山嵌入式linux第一期_裸机实战之开发板熟悉与体验篇
  15. 获取电信天邑TEWA-700E光猫超级密码相近系列通用方法
  16. linux动态链接库全局变量共享问题DLL共享数据段
  17. 微信云开发Al短视频一键换脸小程序源码
  18. 零基础学习一年拿到BAT三家offer
  19. 机器人煮面机创始人_煮面机器人引领智能餐饮新时代
  20. linux虚拟机重启后,运行nmtui提示NetworkManaer 未运行

热门文章

  1. (转载)余额模型使用指南
  2. C语言|int型最大值和最小值
  3. 亚马逊和脸书发布 TorchServe 解决Pytorch 模型的部署问题
  4. Ubuntu中文件系统根目录上的磁盘空间不足的详细解决方案
  5. Signing for xxx requires a development team. Select a development team
  6. 描述计算机算法方法,算法及算法的描述方法
  7. 经常出现 Limiting *** from XXX to 200 packets/sec
  8. 初级软件测试相关知识
  9. 优秀图片生成参数-stable-diffusion-webui
  10. vdr使用linux nfs作为存储