Python:Day08 文件操作
能调用方法的一定是对象!
文件的操作分为三步:
1、打开文件
2、操作文件
3、关闭文件
 f= open('小重山','r',encoding='utf8')  #以读的方式打开一个文件,如果文件不存在,则报错
 f= open('小重山','w',encoding='utf8')  #以写的方式打开一个文件,如果文件不存在,则创建一个,如果文件中有内容,则会将内容格式化掉
 f= open('小重山','a',encoding='utf8')  #以追加的方式打开一个文件,如果文件不存在,则创建一个
 f.write('hello world')  #在追加模式下,往文件里面写内容也是用write,而不是append,追加的信息是紧跟在文本后面,没有空格,在w模式下,两个write内容也是紧跟着的
 f.read()    #读整个文件
 f.close()
默认情况下,程序执行完成之后,python解释器会自动关闭文件,也就是说默认执行了f.close,但这种是不安全或都说是不可靠的,所以最好的手动关闭文件。
文件操作方法:
1、read
print(f.read(10)) #括号中的数字表示字符,一个汉字和字母一样,都占一个字符,换行符\n也算一个字符,但在打印的时候不显示出来 显示如下:
昨夜寒蛩不住鸣。
千
2、readline:缺点:只能一行一行打,不能指定多行
print(f.readline()) #打印一行,如果括号中加数字,则表未打印这一行的多少个字符,数字超过当前行所有字符总数时,显示这一行所有内容,换行符\n不显示出来,会执行换行运作
print(f.readline()) #打印下行一内容,说明无论read还是readline,都是从光标之后开始读的 显示如下:
昨夜寒蛩不住鸣。 千里梦,已三更。
3、readlines:缺点:打开的为整个文件,非常占用内存。
print(f.readlines()) #括号里什么不都加,读所有行,注意:返回值是一个列表,且每一行为一个字符串,\n显示,不执行换行运作 显示如下:
['昨夜寒蛩不住鸣。\n', '千里梦,已三更。\n', '起来独自绕阶行。\n', '人悄悄,帘外月胧明。\n', '白首为功名,旧山松竹老,阻归程。\n', '欲将心事付瑶琴。\n', '知音少,弦断有谁听。']
小练习:打印出整首词并在第6行的后面加一句:i like it
number = 0
for i in f.readlines(): #一定要注意,f.readlines()是一个列表,每一行为一个元素
number +=1
if number ==6:
i=''.join([i.strip(),'i like it']) #用中括号括起来的都是列表,join的这个方法就是将列表中的字符串拼接起来
print(i.strip()) #这个代码有一个小优化,就是去掉了一个print,要学会这种思路
f.close()
最有效的打开文件方法:
for i in f: 这是for内部将f对象做成一个迭代器,用一行去一行
print(i.strip())
enumerate() #后面括号中必须是一个序列
4、tell:告知光标位置
print(f.tell())
print(f.read(2))
print(f.tell()) 显示如下:
0
昨夜
6 #注意:一个中文字符为光标向后挪3个,一个英文字符光标向后挪1个
5、seek:调整光标位置
f.seek(0) #括号中的数字代表光标要调整到的位置
6、flush:将内存中数据存到硬盘中
进度条:
import sys,time
for i in range(30):
sys.stdout.write('*')
sys.stdout.flush()
time.sleep(0.1) for i in range(30):
print('*',end='',flush=True) #end的用法要记住
time.sleep(0.1)
7、truncate():截断从当前光标起括号中数字起后面的所有字符,如果不加数字,则代表从前当光标位置开始截断,此方法必须要write和append模式下使用。
桃之夭夭,灼灼其华。之子于归,宜其室家。
桃之夭夭,有蕡其实。之子于归,宜其家室。
桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 f.truncate(24) #桃之夭夭,灼灼其 f.seek(24)
f.truncate() #桃之夭夭,灼灼其
文件的打开模式:
r+ :光标是在最前面一个位置,读可以,如果要写的话,只能写在最后,因为读是根据光标的,而写是不管你光标在哪,都是写在最后面
w+ :首先还是先格式化文件,然后写,写过之后光标移到写的内容后面,如果想读,需要调整光标
a+ :以追加方式打开时,光标在最后,所以写的话也是紧跟最后,读的话还是需要调整光标
with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log','r') as f:  #括号内的两个都要加引号
    pass
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在python2.7后,with又支持同时对多个文件的上下文进行管理,即,
with open('log1') as obj1,open('log2') as obj2:     #默认情况下,如果不加模式,则文件以read模式打开
    pass
别人总结的,先贴着!
f.read() #读取所有内容,光标移动到文件末尾
f.readline() #读取一行内容,光标移动到第二行首部
f.readlines() #读取每一行内容,存放于列表中 f.write('1111\n222\n') #针对文本模式的写,需要自己写换行符
f.write('1111\n222\n'.encode('utf-8')) #针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) #文件模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式 #了解
f.readable() #文件是否可读
f.writable() #文件是否可读
f.closed #文件是否关闭
f.encoding #如果文件打开模式为b,则没有该属性
f.flush() #立刻将文件内容从内存刷到硬盘
f.name
Python:Day08 文件操作的更多相关文章
- python day08 文件操作
		2019.4.8 S21 day08笔记总结 一.进制 对于计算机而言无论是文件存储 / 网络传输数据本质上都是:二进制(010101010101),如:电脑上存储视频/图片/文件都是二进制: QQ/ ... 
- 员工管理系统+字符编码+Python代码文件操作
		员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1 debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ... 
- Python :open文件操作,配合read()使用!
		python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ... 
- Python 常见文件操作的函数示例(转)
		转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ... 
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
		孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ... 
- 孤荷凌寒自学python第三十三天python的文件操作初识
		孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ... 
- python中文件操作的六种模式及对文件某一行进行修改的方法
		一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ... 
- python中文件操作的其他方法
		前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ... 
- Python常见文件操作的函数示例
		# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ... 
- python的文件操作及简单的用例
		一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ... 
随机推荐
- js/es6 元素拖动
			元素事件:鼠标按下事件/鼠标移动事件/鼠标松开事件 元素样式:让元素脱离文档流,采用绝对定位的方式. 一.鼠标按下事件 当鼠标在元素上面按下时,保存元素的初始偏移量和鼠标按下时的坐标,然后在状态变量里 ... 
- vue2.4+vue-cli+webpack  history模式打包后 刷新404
			开启HTML5 History Mode后,尤其需要server端的支持,官方文档里就有介绍:(传送门: https://router.vuejs.org/zh-cn/essentials/histo ... 
- Django的下载安装以及实现一个简单示例
			一.Django下载安装 Django下载链接 1. 下载Django: pip3 install django==1.11.9 (大的版本1.11不要错) 2.创建一个django proje ... 
- Spring 切入点配置
			有关各种拦截的切入点配置举例 (1)只对返回值为String的方法进行拦截 @Pointcut("execution (java.lang.String com.zzdr.spring.se ... 
- 自动排版工具——XML自动排版生成工具
			——支持全球化/多语言/符合W3C标准的XML自动排版工具 Boxth XML/XSL Formatter是专为XML数据或其他结构化数据源自动输出排版文件(如: PDF等)而设计的集数据格式化.版式 ... 
- 你不可不知的Java引用类型之——SoftReference源码详解
			定义 SoftReference是软引用,其引用的对象在内存不足的时候会被回收.只有软引用指向的对象称为软可达(softly-reachable)对象. 说明 垃圾回收器会在内存不足,经过一次垃圾回收 ... 
- Struts2之action 之 感叹号 ! 动态方法调用
			struts2的动态方法调用的方式: 1.第一种方式:设置method属性 在Action类中定义一个签名与execute方法相同.只是名字不同的方法,如定义为: public String logi ... 
- MySQL5.7 搭建主从同步
			性能更好的新服务器申请下来了,我们决定在2台新服务器上使用mysql5.7,并且使用主从同步.读写分离架构,很不幸这个任务落到了我的头上.读写分离是在业务代码中实现的,在此不做详述,介绍一下我搭建My ... 
- 2016-04-25-信息系统实践手记5-CACHE设计一例
			layout: post title: 2016-04-25-信息系统实践手记5-CACHE设计一例 key: 20160425 tags: 业务 场景 CACHE 系统分析 系统设计 缓存 modi ... 
- ConcurrentDictionary与Dictionary 替换
			本文导读:ASP.NET中ConcurrentDictionary是.Net4 增加的,相对于Dictionary的线程安全的集合, ConcurrentDictionary可实现一个线程安全的集合, ... 
