python 对文件的读写在程序开发中也是非常常见的操作,比如写入一些简单的系统日志、把爬虫采集的数据写入到本地文件等等,今天我们聊聊 python 怎么去读写一个文件。

1、python 写入文件

# -*- coding:utf-8 -*-

#传统模式,不够安全,需要手动关闭文件资源

#如果在关闭文件之前程序异常终止,

#被打开的文件不能被关闭,占用系统资源

f = open('newFile1.txt','w')

f.write('这种模式写入不够安全,请慎用')

f.close()

#推荐模式,即使程序异常终止

#也会自动关闭文件

#类似于 try catch

with open('newFile2.txt','w') as f:

f.write('推荐使用这种模式')

open('xxx.txt','w'),'w' 表示以写的模式打开文件,在写之前要先找到这个文件,如果文件不存在, python 则会先自动创建该文件,然后再写入内容。

注意程序写入的内容并不一定立刻就写入硬盘了,往往是先写入到内存中,然后再根据的系统的空闲时间慢慢从内存写入硬盘中,等到调用 close 方法的时候才会确认把内存中剩下的数据写入到硬盘。

所以一旦我们忘记主动调用 close 来关闭文件的话,或者在程序写入文件的时候出现异常终止程序从而不会再继续往下执行 close 方法,就可能导致部分数据丢失,为了避免这种情况,我们推荐使用 with 这种方式来打开文件,使用 with 即不管是程序在完成对文件写入操作之后还是程序写入文件异常终止都会自动调用 close 方法来关闭文件。

# -*- coding:utf-8 -*-

#内容追加模式

with open('newFile2.txt','a') as f:

f.write('不会覆盖已有内容')

如果重复对一个文件写入内容,会不会对已经存在的内容有影响呢,答案是会的。

python 的文件写模式分覆盖写和追加写。刚刚上面提到的 'w' 模式就是覆盖写,即每次以 'w' 模式打开文件都会先直接清空该文件,注意是只要一打开就会先清空即使你不写入任何内容。还有一种就是使用 'a' 追加模式,这种模式不会清空文件中原有的内容,只会在原有内容后面继续追加新的内容。

2、python 读文件

# -*- coding:utf-8 -*-

#读文件,一次性读所有内容,适用文件大小较小

with open('newFile1.txt','r') as f:

print(f.read())

#读文件,循环读,每次只读指定大小的内容,适用文件大小较大

with open('newFile1.txt','r') as f:

while True:

print(f.read(2))

# 打开GBK文件

with open('newFile1.txt','r',encoding='gbk') as f:

print(f.read())

#按行读取内容

with open('newFile1.txt','r') as f:

for line in f.readlines():

print(line)

读文件和写文件类似,只不过是以读的模式打开文件,open('xxx.txt','r'),'r' 表示以只读模式打开文件,读模式打开文件需要确认文件已经存在,如果文件不存在程序会报找不到文件的错误。

如果文件打开成功,接下来会调用 read 方法来一次性把文件的所有内容读到内存当中,最后再需要调用 close 来关闭文件。文件的读写操作完成之后都需要关闭文件,不然一直打开的文件会占用系统资源。

同样的,由于文件的读写过程中可能会出现异常,导致不能执行后面的 close 方法来关闭文件,所以跟上面提到的文件的写入一样,我们也推荐使用 with 来打开文件,总之,对于文件的读写操作,都推荐使用 with 方式来打开。

# -*- coding:utf-8 -*-

#读文件,循环读,每次只读指定大小的内容,适用文件大小较大

with open('newFile1.txt','r') as f:

while True:

print(f.read(2))

如果一个文件很大,有几十个 G ,那么把所有的内容一次性读到内存中肯定不现实,这时候我们可以循环读文件,每次只读指定大小的内容,read(size) 表示只读取 size 字节的数据。

# -*- coding:utf-8 -*-

#按行读取内容

with open('newFile1.txt','r') as f:

for line in f.readlines():

print(line)

也有的文件内容是按行写入的,比如常见的 config 配置文件,我们还可以使用 readline() 可以按行来读取内容,也可以把文件所有内容先按行读取最后放到一个数组 list 中返回。

# -*- coding:utf-8 -*-

# 打开GBK文件

with open('newFile1.txt','r',encoding='gbk') as f:

print(f.read())

实际上不同的文件会有不同的编码格式,上面我们讲的都是基于 utf-8 编码格式的文件,如果要打开非 utf-8 的文件,还需要使用 open('xxx.txt','r',encoding='gbk') 这种方式来指定文件的编码。

3、二进制文件读写

我们上面讲的都是默认的文本文件,还有常见的图片、音视频等二进制文件怎么用 python 读写呢,其实只需要使用 'rb' 和 'wb' 这两种模式就可以对二进制文件进行读写了。

# -*- coding:utf-8 -*-

#二进制读写文件

with open('tim.jpg','rb') as f:

print(f.read())

with open('tim.jpg','wb') as f:

f.write()

python 写入文件 wb_python读写文件相关推荐

  1. python中文字符串写入文件,python写入中英文字符串到文件的方法

    python写入中英文字符串到文件的方法 本文实例讲述了python写入中英文字符串到文件的方法.分享给大家供大家参考.具体分析如下: python中如果使用系统默认的open方法打开的文件只能写入a ...

  2. Python随笔:进行读写文件时,在字符串前加 r,u,b,f 的含义

    Python随笔:进行读写文件时,在字符串前加 r,u,b,f 的含义 文章目录 Python随笔:进行读写文件时,在字符串前加 r,u,b,f 的含义 1.r'xxx' 的含义 2.u'xxx' 的 ...

  3. python以读写方式打开文件_python读写文件操作详细介绍【传智播客】

    Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...

  4. Python with open() as 读写文件

    读文件: 要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符: >>> f = open('E:\python\python\test.tx ...

  5. 自学python(mac)----读写文件

    python 读写文件-----文本编辑器 我们先来了解一些与文件相关的命令(就是方法或者函数). close:关闭文件 read:读取文件内容,可以把结果赋给一个变量 readline:只读取文本文 ...

  6. python 学习记录-用python从硬盘中读写文件 Day21

    (一)文件操作 文件操作步骤: 第一步: 打开文件 f = open(文件名, 操作模式, encoding=文件编码) 第二步: 读写文件 f.read() f.write() 第三步: 关闭文件 ...

  7. python使用with as 读写文件

    文章目录 1. 传统读文件 2. with open() as 读文件 3. 传统写文件 4. with open() as 读文件 二进制文件 最近在项目中用到了Python的with as来开关读 ...

  8. python写入指定路径的文件_python 从shell读取指定文件以及写入指定文件

    python 从shell读取指定文件以及写入指定文件 运行不同的文件每次都要修改脚本,能不能指定输入文件以及输出文件? python abstract_element.py 1.txt 2.txt ...

  9. python以读写方式打开文件_Python读写文件

    Python读写文件 1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open( ...

  10. python怎么读write_Python读写文件

    Python读写文件 现在做CV又要开始用Python了,复习一下Python怎么读写文件23333 读文件 fin=open('','r') #read the whole file theWhol ...

最新文章

  1. 并发、并行、串行、同步、异步、阻塞、非阻塞
  2. 对话文津|相约“信息”的前世今生
  3. [BZOJ 2038][2009国家集训队]小Z的袜子(hose)(莫队)
  4. 为什么linux中c语言不一样,不懂linux为什么要死守c语言。
  5. 构建之法4、17章观后感
  6. 077_访问者的信息
  7. 搜索推荐炼丹笔记:Transformer在搜索推荐中的应用
  8. 郑州计算机单招学校有哪些专业,郑州单招的学校有哪些专业
  9. 虚拟化技术之KVM安装与使用
  10. 禁止电商平台二选一、遛狗必栓绳!5月起有这些新规定
  11. android程序的建立,创建第一个Android程序 HelloWorld
  12. android 控制音乐,Android音乐控制接口RemoteController使用
  13. 【Linux】肝!Shell 脚本编程最佳实践
  14. arraycolumn php5.4以下怎么用,兼容php5.4和更低版本php的array_column公共方法
  15. 2021全球Top 1000计算机科学家h指数发布,中国53人上榜!Bengio总榜第二,韩家炜居华人首位...
  16. 使用mbedtls库实现ftps协议
  17. 3.3Packet Tracer - 实施基本连接
  18. 使用iperf测试网速
  19. 【蓝桥杯】:奇怪的分式
  20. Ubuntu: Firefox 的profile missing解决

热门文章

  1. eclipse画UML图
  2. 谷歌浏览器设置信任_Win10谷歌浏览器添加信任网址/站点的方法
  3. 使用mapboxgl 实现特定的地图效果
  4. 【预测模型】基于粒子群算法优化最小二乘支持向量机lssvm实现预测matlab源码
  5. 第4章:图数据处理管道
  6. Ms08067攻防训练平台内测-100个免费邀请码
  7. Ms08067年度技术文集合
  8. 典型相关分析(CCA)
  9. trados 有道api_塔多思翻译附插件下载-外语准确机翻工具插件(TRADOS)下载2019版-西西软件下载...
  10. 将multisim中波形在matlab中输出