python的文件操作

文件操作

在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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值