【python3之文件操作】
一、文件操作
1.文件处理的流程
1)打开文件,得到文件句柄并赋值给一个变量
2)通过句柄对文件进行操作
3)关闭文件
例如:
f = open('chenli.txt') #打开文件
first_line = f.readline()
print('first line:',first_line) #读一行
data = f.read()# 读取剩下的所有内容,文件大时不要用
print(data) #打印读取内容
f.close() #关闭文件
2.文件操作基本用法
1)基本用法:
file_object = open(file_name, access_mode = ‘r’, buffering = -1)
open函数有很多的参数,常用的是file_name,mode和encoding
file_name:打开的文件名,若非当前路径,需指出具体路径
access_mode文件打开模式
buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
2)文件打开模式
- r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
- w,只写模式【不可读;不存在则创建;存在则清空内容】
- x, 只写模式【不可读;不存在则创建,存在则报错】
- a, 追加模式【可读; 不存在则创建;存在则只追加内容】,文件指针自动移到文件尾。
"+" 表示可以同时读写某个文件
- r+, 读写【可读,可写】
- w+,写读【可读,可写】,消除文件内容,然后以读写方式打开文件。
- x+ ,写读【可读,可写】
- a+, 写读【可读,可写】,以读写方式打开文件,并把文件指针移到文件尾。
"b"表示以字节的方式操作,以二进制模式打开文件,而不是以文本模式。
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
3)以读r的方式打开文件
#!/usr/bin/env python
# -*- coding:utf-8 -*-
f=open('1.txt',encoding='utf-8',mode='r')
print(f)
data1=f.read()
print(data1)
1.txt
55542342
123
输出:
<_io.TextIOWrapper name='1.txt' mode='r' encoding='utf-8'>
55542342
123
补充:
1)python中有三个方法来处理文件内容的读取:
read() #一次读取全部的文件内容。 readline() #每次读取文件的一行。 readlines() #读取文件的所有行,返回一个字符串列表。 2)print(f.readable()) #判断文件是否是r模式打开的
3)print(f.closed) #判断文件是否是关闭状态
4)python中在文本文件内容移动的操作
file.seek(offset,whence=0) #从文件中给移动指针,从whence(0起始,1当前,2末尾)偏移offset个字节,正往结束方向移动,负往开始方向移动
file.tell() #返回当前文件中的位置。获得文件指针位置
5) file.truncate(size=file.tell()) #截取文件到最大size个字节,默认为当前文件位置
4)以w方式写入文件
f=open('a.txt','w',encoding='utf-8')
# f=open('b.txt','r',encoding='utf-8') #以读的方式打开文件,文件不存在则报错
f=open('b.txt','w',encoding='utf-8')
# print(f.writable())
f.write('111111\n22222222')
f.seek(0)
f.write('\n333333\n444444')
f.writelines(['\n55555\n','6666\n','77777\n'])
f.close()
a.txt 为空
b.txt
333333
444444
55555
6666
77777
补充:
file.write(str) #向文件中写入字符串(文本或二进制)
file.writelines(seq) #写入多行,向文件中写入一个字符串列表,注意,要自己加入每行的换行符
file.flush() #刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入.
5)文件修改
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
read_f=open('b.txt','r')
write_f=open('.b.txt.swap','w')
for line in read_f.readlines():
if line.startswith('1111'):
line='2222222222\n'
write_f.write(line)
read_f.close()
write_f.close()
os.remove('b.txt')
os.rename('.b.txt.swap','b.txt')
3.上下文管理with语句
当你做文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。
正常情况下,代码如下:
file = open("/tmp/foo.txt")
data = file.read()
file.close()
这里有两个问题。一是可能忘记关闭文件句柄;二是文件读取数据发生异常,没有进行任何处理。
然而with可以很好的处理上下文环境产生的异常。下面是with版本的代码:
with open("/tmp /foo.txt") as file:
data = file.read()
with的基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。
补充:
模拟 tail -f access.log
#!/usr/bin/env python
# -*- coding:utf-8 -*- # tail -f access.log
import time
with open('access.log','r',encoding='utf-8') as f:
f.seek(0,2)
while True:
line=f.readline().strip()
if line:
print('新增一行日志',line)
time.sleep(0.5)
【python3之文件操作】的更多相关文章
- python3.7 文件操作
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 文件操作 # r 只读,默认打开方式,当文件不存在时会报错 # ...
- (17)-Python3之--文件操作
1.文件的操作流程 第一,建立文件对象. 第二,调用文件方法进行操作. 第三,不要忘了关闭文件.(文件不关闭的情况下,内容会放在缓存,虽然Python会在最后自动把内容读到磁盘,但为了以防万一,要养成 ...
- python3的文件操作
open的原型定义在bultin.py中,是一种内建函数,用于处理文件 open(file, mode='r', buffering=None, encoding=None, errors=None, ...
- python3之文件操作
一 打开文件 根目录在d盘的文件名为‘学习资料.txt’的文件 a)绝对路径(最开始的,根目录文件)例: e:\学习资料.txt 相对路径 直接用文件名字 b)操作方式 只读 只 ...
- python3中文件操作及编码
#之前一直没明白文件处理中的w和wb的区别到底是什么,#在看过视频后才知道,原来在linux里面是没有区别的,#但是在windows里面就能够看出区别来了#下面来个例子: with open(&quo ...
- python3中文件/IO编程
python3的文件操作可谓是我见过所有语言中最舒服的,那我们来一起看一下py3中的文件操作. 1:文件的打开方式有以下几种: 注:以上图表参考菜鸟教程 2:定位读写文件 f = open(&quo ...
- Python3学习之路~2.7 文件操作
对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 Somehow, it seems the love I knew was always the ...
- Python3 文件操作(十六)
一 文件操作 1.介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...
- Python3.x:open()文件操作
Python3.x:open()文件操作 open/文件操作: #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 f=ope ...
随机推荐
- C# httpclient获取cookies实现模拟web登录
目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能. 在二期开发中,产 ...
- HTML5标签总结笔记
HTML5标签笔记 1.格式标签 元素名和属性一般不区分大小写,特殊的如id和class需要区分 格式标签: <acronym> 定义只取首字母的标签 <abbr>定义缩写 & ...
- 美杂志初次取得答应走进google奥秘研讨所Google X
Google X作为google最奥秘的研讨部分.开发过google眼镜.无人驾驶轿车等多项创新项目.至今为止.Google X从未答应媒体进入採訪.但近日,据日本GIGAZINE站点报导,美国杂志& ...
- Uber的成功绝非偶然
拥有打造一个初创企业并将其做强做大的梦想并不是难事,困难的是怎样将该梦想变成现实.娱乐媒体行业经常将企业成功的过程进行美化,干净利落的将企业成功前所经历的艰苦时刻进行大刀阔斧的剪裁,让其刚好可以达到拍 ...
- hdu5418--Victor and World(floyd+状压dp)
题目链接:点击打开链接 题目大意:有n个城市.在n个城市之间有m条双向路.每条路有一个距离.如今问从1号城市去游览其他的2到n号城市最后回到1号城市的最短路径(保证1能够直接或间接到达2到n).(n& ...
- js清除cookie有时无法清除
最近写页面遇到一个问题,退出的时候需要清除cookie,但是刚开始一直清除不掉,代码如下: //清除函数 function delCookie(name) { var date= new Date() ...
- jmeter的使用---web测试
jmeter的使用---web测试 url:http://127.0.0.1:1080/WebTours/ 1.通过badboy录制脚本 1.1输入url点击右侧的跳转按钮,随后右侧显示url界面 1 ...
- 关于APICloud读取不到虚拟机及数据库的问题
工具:apicloud编辑器 虚拟机:夜神虚拟机(nox_setup_v6.0.1.0_full)版本 数据库:Oracle 11G 以为夜神虚拟机版本太高,进程adb.exe读取不出虚拟机和数据库, ...
- jupyter 安装、配置及使用笔记
jupyter 安装.配置及使用笔记 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-2-22 絮絮叨叨篇的前言 早在大 ...
- Can't update: no tracked branch No tracked branch configured for branch dev.
1.git pull 命令出现以下错误 $ git pull There is no tracking information for the current branch. Please speci ...