文件操作

一 文件的读写

  1. file = open(path,flag,encoding) 打开文件 将会返回一个 file 对象 这样打开需要手动关闭
    encoding:编码方式 encoding="utf-8"
    注意:ValueError: binary mode doesn't take an encoding argument
    (ValueError:二进制模式不需要编码参数 )
    encoding:默认编码会根据平台
    open的打开方式
    模式 说明
    r 以只读的方式打开文件,文件的描述符放在文件的开头
    rb 以二进制格式打开一个文件用于只读,文件的描述符放在文件的开头
    r+ 打开一个文件用于读写,文件的描述符放在文件的开头
    w 打开一个文件只用于写入,如果该文件已经存在会覆盖,如果不存在则创建新文件
    Wb 打开一个文件值用于写入二进制,如果该文件已经存在会覆盖,如果不存在则创建新文件
    w+ 打开一个文件用于读写 如果不存在则创建新文件
    a 打开一个文件用于追加写,如果文件存在,文件描述符将会放到文件末尾 不存在则创建
    ab 打开一个文件用于追加写,如果文件存在,文件描述符将会放到文件末尾 不存在则创建
    a+ 打开一个文件用于读写 如果该文件已存在,文件指针将会放在文件的结尾 不存在则创建

实例

#以utf-8编码的方式读
f = open('1.txt','r',encoding='utf-8') #这个位置 不能使用rb 
#以utf-8编码的方式写
f = open('a.txt','w',encoding='utf-8')
f.write('呵呵哒')

2 文件的读取

file.read()          从文件读取指定的字节数,如果未给定或为负则读取所有。

file.readline()              读取整行,包括 "\n" 字符。

file.readlines()        读取所有行并返回列表

next(file)           返回文件下一行。

3 文件的写

file.write(str)         将字符串写入文件,没有返回值。

file.writelines()       向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。没有返回值

file.flush()            刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

4 关闭文件

file.close()            

你可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险

二 打开文件不需要关闭

with open(path, "a") as f2:
    f2.write("good man")

达语句末尾时,会自动关闭文件,即便出现异常

实例

不使用with的情况

file = open("test.txt","r")
for line in file.readlines():
    print line
file.close()

这样直接打开文件,如果出现异常,如读取过程中文件不存在或异常,则直接出现错误,close方法无法执行,文件无法关闭

使用with的情况

file= open("test.txt","r")
try:
    for line in file.readlines():
        print line
except:
    print "error"
finally:
    file.close()

with语句作用效果相当于上面的try-except-finally

三 编码与解码 使用什么编码 就使用什么解码

  1. str.encode("utf-8")
  2. str.decode("utf-8")

四 列子

1.文件加密

file = open('1.py','r')     
myfile = open('2.py','a+')  
x = file.read()  
for i in x:              
    z = chr(ord(i)+10)   
    myfile.write(z)      

2.文件解密

file = open('4.py','r')       
myfile = open('5.py','a+')
x = file.read()  
for i in x:            
    z = chr(ord(i)-10) 
    myfile.write(z)    

四 pickle 序列化的操作

使用说明:可以将序列 序列化到 文件里 也就是 可以做到 原样写入 原样拿出

以二进制写进文件里 并以二进制的形式读取到内存里

可以将不能写入到文件里面类型的数据 序列化到文件里

(1) dump 写入文件

将数据序列化后写入到 文件里

pickle.dump(数据,文件打开返回的file)

(2) load 将数据反序列化 取出来

pickle.load(文件打开返回的file)

(3) dumps 将数据序列化 直接返回

pickle.dumps(数据)

(4) loads 将dumps序列化后的 进制 转换成 普通的数据类型

pickle.loads(序列化的数据)

例如:

import pickle

mylist=[[1,2,3,4,5,6,7],["abc","xyz","hello"]]
file=open(r"C:\Users\xlg\Desktop\list.bin","wb")
pickle.dump(mylist,file) #保存list到文件
file.close()

import pickle
mylist=[]
file=open(r"C:\Users\xlg\Desktop\list.bin","rb")
mylist=pickle.load(file) #读取文件到list
print(mylist)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容