1.文件的打开 在python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新的文件。 python常用的文件打开模式有以下几种:
是否可读是否可写是否会创建新的文件是否会覆盖原有内容r是否否否w否是是是a否是是否r+是是否是w+是是是是a+是是是否 open(文件名,访问模式) #例如 f=open('test.txt','w')file对象的属性:
属性描述file.closed返回true如果文件已被关闭,否则返回falsefile.mode返回被打开文件的访问模式file.name返回文件的名称file.sortspace如果用print输出后,必须跟一个空格符,则返回false,否则返回truefile对象的常用方法:
read读取指定的字节,默认为所有readline读取文件的一行内容readlines读取文件的所有内容,返回一个列表,列表中元素为每行内容write从指针所在位置写入,写入是字符串内容writelines将列表中的每个元素写入文件中tell指针当前所在位置seek移动指针位置2.文件的关闭 方法一:调用close()方法关闭。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量有限。 方法二: 用with语句自动调用close()方法
with open('path/file','r') as f: print(f.read())3.os模块 os语义为操作系统,处理操作系统相关的功能,可跨平台。 关于操作系统: 1) 返回操作系统类型,posix:为linux操作系统,nt:为windows操作系统
print(os.name)2)操作系统的详细信息
info = os.uname() print(info) print(info.sysname) print(info.nodename)3).系统环境变量
print(os.environ)关于路径: 1).判断是否为绝对路径
print(os.path.isabs('文件路径'))2).生成绝对路径
print(os.path.abspath('文件名/文件路径'))3).join,返回一个绝对路径:当前目录的绝对路径+文件名/目录名
print(os.path.join('文件路径','文件名'))4).获取目录名或者文件名
print(os.path.basename(filename)) print(os.path.dirname(filename))关于文件与目录操作:
1).创建与删除目录
os.makedirs('目录/目录') #递归创建目录 os.mkdir('目录') os.rmdir('目录')2).创建与删除文件
os.mknod('文件') os.remove('文件')3).文件重命名
os.rename('旧文件名','新文件名')4).判断文件或者目录是否存在
print(os.path.exists('文件或目录'))5).分离后缀名和文件名
print(os.path.splitext('文件'))6).分离目录名与文件名
print(os.path.split('目录/文件'))4.json模块 JSON是一种轻量级的数据交换格式。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言的习惯。 python类型数据和JSON数据格式互相转换规则: python中str类型到JSON中转为unicode类型,None转为null,dict对应object python中的集合不能转成json格式。 json模块提供了四个方法:dump,dumps,load,loads 1).dump与dumps dumps只完成了序列化为str, dump必须传文件描述符,将序列化的str保存到文件中
dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) #dump中必须传入参数fp,即文件,因为要保存到文件中 #ensure_ascii=True:中文存储需要设定为False #indent=None:增加缩进,增强可读性,但缩进空格会使数据变大 #separators:自定义分隔符 #sort_keys=True:字典排序2).loads与load loads 只完成了反序列化, load 只接收文件描述符,完成了读取文件和反序列化
loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) #将包含str类型的JSON文档反序列化为一个python对象 load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) #将一个包含JSON格式数据的可读文件饭序列化为一个python对象5.pickle模块 python的pickle模块实现了python的所有数据序列和反序列化。与JSON不同的是pickle不是用于多种语言间的数据传递,它仅作为python对象的持久化或者python程序之间进行相互传输对象的方法,因此pickle支持了python的所有数据类型。 pickle模块也有四中方法:dump,dumps,load,loads,使用方法与json相同,详细用法参考json模块。