文件操作
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。
open(文件名,访问模式)
如:open(‘passwd’,‘w’)
文件不存在就创建文件并打开,文件存在就清空文件
访问模式的比较:
r | 只读,文件不存在不会创建文件,不会清空文件内容 |
---|---|
w | 只写,文件不存在会创建文件,会清空文件内容 |
a | 同w,但不会清空文件内容 |
w+ | 可读可写,文件不存在会创建文件,会清空文件内容 |
a+ | 可读可写,会创建文件,但不会清空文件内容 |
r+ | 可读可写,不会创建文件,也不会清空文件内容 |
对文件对象的常用方法
f=open('passwd','w')
f.write('wow,ansome')
f.close()
f=open('passwd','r')
print(f.read())
面试常考的问题:
在进行文件操作时,文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,
并且操作系统同一时间能打开的文件数量也是有限的。
所以常用的方法是使用with语句帮我们自动关闭文件:
with open('passwd','r+') as f:
print(f.tell())
print(f.read())
with语句用于对资源进行访问的场合,保证不管处理过程出现错误或异常都会进行规定好的清理动作,释放被访问的资源。
os模块
os,语义为操作系统,处理操作系统相关的功能,可跨平台。
json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。
这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
要注意的是,python中的集合不能转化为json格式
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象
json.dump: 将对象序列化并保存到文件
json.load: 将序列化字符串从文件读取并反序列化
import json
dic={'en':[123,456,666],'curry':100,'jason mars':'勇士总冠军'}
print(dic)
json.dumps(dic,indent=4)
在碰到集合这总json不可转化的数据类型时,就需要先将集合类型转化为json可识别的类型,在进行编码。在解码时,将解码好的类型再转化成集合。
因为json的局限性,决定了它不能支持python的所有数据类型,python中提供了识别所有数据类型的模块–pickle
python的pickle模块实现了python的所有数据序列和反序列化。与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。
JSON和pickle模块的区别:
1、JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。
2、JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异。
练习:
import string
def panduan(id):
lee=[]
max=0
for i in id:
if i not in lee:
lee.append(i)
else:
if max<len(lee):
max=len(lee)
lee.clear()
return max
def main():
name=input('please input str:')
f=panduan(name)
print(f)
main()
def zhiling(juzhen):
hang=0
for item in juzhen:
for i,value in enumerate(item):
if value==0:
for j in range(len(juzhen[i])):
juzhen[i][j]=0
for k in juzhen:
k[i]=0
return juzhen
def main():
prefix=[
[4,8,0,5],
[3,2,9,1],
[2,1,2,3],
[7,6,1,3]
]
f=zhiling(prefix)
print(f)
if __name__=='__main__':
main()