文件系统和文件
1,文件系统是OS 用于明确磁盘或分区上的文件的方法和数据结构——即在磁盘上组织文件的方法
2,计算机文件(或称文件,电脑档案,档案),是存储在某种长期存储设备或临时存储设备中的一段数据流,并且归属于计算机文件系统管理下
概括来讲
1,文件是计算机中由OS 管理的具有名字的存储区域
2,在linux 系统上,文件被看做是直接序列
3,Python内置函数open()用于打开文件和创建文件对象
。open(name[,mode[,bufsize]])
4,open 方法可以接收三个参数:文件名,模式和缓冲区参数
1),open函数返回的是一个文件对象
2),mode:指定的打开模式
3),bufsize:定义输出缓存
0,表示无输出缓存
1,表示使用缓冲
2,负数表示使用系统默认设置
3,正数表示使用近似指定大小的缓冲
5,简单模式
1),r:只读
open(’/var/log/message.log’,‘r’)
w:写入
a:附加
6,在模式后使用"+"表示同时支持输入,输出操作
1),如 r+ 、 w+ 、和a+
7,在模式后附加"b"表示以二进制方式打开
2),如rb 、 wb+
比如:var_name = open (file_name[mode,[bufsize]])
mode:
r
w
a
r+(读入)
w+(写入) 默认可以自动创建文件/已存在文件,会将已存在文件进行覆盖
a+ () 默认可以自动创建文件
b表示以二进制模式打开文件:
rb
wb
ab
rb+
wb+
ab+
缓冲:
0:禁用
负数:使用系统默认缓冲
1:使用缓冲,只缓冲一行数据
2+:指定缓冲空间大小
file.seek(offset[whence])
whence:起点
0:从文件头
1:从当前位置
2:从文件尾部
offset:偏移量
使用 保存结构化数据:
JSON(JavaScript Object Notation):
调用标准模块json可以采用Python数层次结构,并将它们转换为字符串表示形式;这个过程为序列化。从字符串表中重建数据成为反序列化。在序列化和反序列化之间,表示对象的字符串可能已存储在文件或数据中,或通过网络连接发送到某个远程机器。
json.dumps() 是将一个字典/列表转换为字符串
json.dump() 是将字符串存放到文本文件中
json.dump('str',文本文件名称)
例如:
In [20]: f1 = open(‘programming.txt’,‘w’)
In [24]: json.dump('I love Python',f1)
json.loads() 是将str转换成dict/列表格式
json.dumps 与 json.loads()是一个相互逆反的过程!
注意:如果 通过json.dumps(‘元组’) 也是会变成 str 字符串类型
但是通过json.loads(’’) 后,会转换为列表[list]数据类型
使用json.dump()和json.load()
import json
numbers = [2,3,5,7,11,13]
filename = ‘numbers.json’
In [41]: with open(filename,‘w+’) as f_obj:
…: json.dump(numbers,f_obj)
…: f_obj.seek(0)
…: x1 = f_obj.read()
…: print(x1)
其中dump 是把序列化后的字符串写到一个文件中,而load是从一个一个文件中读取数据!
Pickle - 泡菜模块:
pickle是一种允许对任意复制Python对象进行序列化的协议。因此,它特定于Python,不能用于其他语言编写的引用程序通信。默认情况下它也是不安全的;
pickle.dump(’’,)
需要使用二进制方式写入文件,然后需要读的时候需要rb
f1 = open(’’,wb)