爱陪小樱桃

导航

 

对文件进行操作:
1、打开一个文件,得到一个文件句柄,赋值,给一个变量;
2、通过句柄对文件进行操作;
3.关闭文件

现见如下文件如下:

寒蝉凄切, 对长亭晚, 骤雨初歇。
都门帐饮无绪, 留恋处, 兰舟催发。
执手相看泪眼, 竟无语凝噎。
念去去, 千里烟波, 暮霭沉沉楚天阔。
多情自古伤离别, 更那堪, 冷落清秋节!
今宵酒醒何处? 杨柳岸, 晓风残月。
此去经年, 应是良辰好景虚设。
便纵有千种风情, 更与何人说?


读取如上的文件内容:


f=open('雨霖铃',encoding='utf8')
data=f.read()
print(data)
f.close()

注意:open函数打开是通过操作系统打开文件的,win系统默认的编码是GBK编码,所以直接打开会乱码,所以需要转化到encoding='utf8',如果win的编码是
gbk,就可以直接使用open打开了,


文件打开模式:
--------- ---------------------------------------------------------------
'r' 读
'w' 写,默认先清空文件
'x' 创建一个新的文件,并且开启写的模式
'a' 在文件的末尾添加内容
'b' 二进制的模式
't' 默认是txt的模式
'+' 打开磁盘,在读和写的时候
'U' 通用换行模式,(不建议使用)


学习使用上述的模式:
f=open('雨霖铃','r',encoding='utf8')
data=f.read(5)
data2=f.readlines()
print(data)
print(data2)

例子2:

f=open('雨霖铃','r',encoding='utf8')
for line in f.readlines():
print(line)


例子3:
在第三行后边加上:helloworld
f=open('雨霖铃','r',encoding='utf8')
number=0
for line in f.readlines():
number+=1
if number==3:
line=''.join([line.strip(),'helloworld'])
print(line)

 

知识点:
tell()
f=open('雨霖铃','r',encoding='utf8')
number=0
for line in f.readlines():
number+=1
if number==3:
line=''.join([line.strip(),'helloworld'])
print(line)

print(f.tell())
tell()就是告诉目前光标所在位置,一般英文字符按照一个算,中文按照3个算的;
f.seek()就是把光标,至于初始的开始的位置;


知识点2:
在terminal上操作

应用进度条:
import sys,time
for i in range(45):
sys.stdout.write('*')
sys.stdout.flush()
time.sleep(0.1)


f=open('雨霖铃','w',encoding='utf8')
f.truncate(5)
f.truncate()
print(f.isatty())
print(f.seekable())
print(f.readable())
f.close()


f=open('雨霖铃2','w',encoding='utf8')
f=open('雨霖铃2','a',encoding='utf8')

f.write('hello')
f.write('\n你好2\n')
f.write('支架')
f.close()


r+,w+模式:
f=open('雨霖铃2','r+',encoding='utf8')#以读写的模式打开文件
print(f.read(5))#可读
f.write('qiuqiu')
print('---------------------------')
print(f.read())


f=open('雨霖铃2','w+',encoding='utf8')#以写读的模式打开文件
print(f.read(5))#可读,但是什么都没有,因为w+只要执行就会先格式化了
f.write('诺诺')
print('---------------------------')
print(f.read())#还是read不到,这时候要查看一下光标;
print(f.tell())
f.seek(0)#光标至为最初始化的状态
print(f.read())


w+与a+的区别在于是否在开始覆盖整个文件

为了避免的打开文件忘了关闭使用with语句

with open('雨霖铃2','r') as f:
pass
Python2.7之后,with又支持多个文件

with open('xxx') as obj1, open('xxx2') as obj2:
pass

 

posted on 2017-08-13 21:54  cherry小樱桃  阅读(271)  评论(0编辑  收藏  举报