zoukankan      html  css  js  c++  java
  • python文件的读写

    1、使用open内置函数打开一个文件

    file:相对路径或者绝对路径

    mode:文件的模式。 r 只读   w只写  b:二进制  t:以文本形式打开等等

    encoding:编码方式,windows下默认为gbk

    例子:

    读文件的例子

    file=open('./a.txt',encoding='utf8')
    print(file.read())#读取整个文件,
    #print(file.read(10))#read可以指定读取的长度,一般建议使用指定长度的方式,否则cpu可能运行很长时间
    file.close()
    file=open('./a.txt',encoding='utf8')
    while True:
        content=file.readline()
        print(content)#每次只读取一行
        if content == '':
            break
    file.close()
    file=open('./a.txt',encoding='utf8')
    content= file.readlines()#读取所有文件,并以每一行为单位放在一个列表里
    print(content)
    file.close()

     推荐的读

    file=open('./a.txt',encoding='utf8')
    while True:
        content = file.read(1024)#每次读1024个长度
        print (content)#读取整个文件
        if not content:
            break
    file.close()

    写文件的例子,其他说明:如果写入的文件不存在,则会自动创建一个文件并不会报错。

    file=open('./a.txt','w',encoding='utf8')
    file.write('美丽')
    file.close()

     文件名的切割

    file_name='kaixin.txt'
    print(file_name.rpartition('.'))#以.作为分隔符,从右边可是切,返回一个元组('kaixin', '.', 'txt'),有时会用这种方式拆解分割名字
    import os
    file_name='kaixin2020.10.25.txt'
    print(file_name.rpartition('.'))#结果('kaixin2020.10.25', '.', 'txt')
    print(os.path.splitext(file_name))#结果('kaixin2020.10.25', '.txt')

     异常处理

    import os
    if not os.path.exists(path): #判断一个文件夹或者文件是否存在,都可用##os.path.isfile("test-data")#判断一个文件是否存在
    
    
    ##也可用这种方式
    try: 
        f =open()
        f.close()
    except IOError: 
        print "File is not accessible."
    #except这里有很多种写法
    #except Exception as e: #给异常起了一个变量名e  最建议的写法,这个是最大的父类
    #  print(e)
    #except FileNotFoundError as e: #指定类型错误,文件不存在的错误

    #try...except...else语句 先try,如果try成功就执行else,如果try失败就走except

     其他

    write中只能写入字符串或者二进制,所以字典、列表、元组等不可能直接写入其中,可以通过str/repr或者json模块转换为字符串再写入。

    也可通过pickle转化为二进制也行。

    json:

    json.dumps(list)#以list举例,作用是将数据转换为json字符串,不会将数据保存到文件里(序列化)

    json.dump(list,file)#作用是将数据转换为json字符串的同时会将数据保存到指定文件里

    json.load(list)#以list举例,将字符串读取并转化为数据的过程,比如转化为字典等 (反序列化)

    json.loads(file)#作用是读取一个文件并将读取到的字符串转为数据

    pickle:

    可将任意对象转化为二进制,比json广

    pickle.dumps()#将作用是将数据转换为二进制,dump类似上

    pickle.loads()#将二进制转化为数据,load类似上

    二者的区别?

    pickle是将数据原封不动的转为二进制,但是这个二进制只能被python识别读取,比如类也可以被存储,其load后,方法均可正常使用,一摸一样。

    json是只保留部分信息,用于不同平台之间的信息传递,其中存储的都是基本的类型,不能传函数、类等,但是可以传递字典、列表、字符串、bool等基本的数据类型。


    with是一个上下文管理器,后面需要__enter__和__exit__方法

    with open(file,r) as file:

      file.read()

           无需在写file.close()

  • 相关阅读:
    银联acp手机支付总结
    fastjson过滤多余字段
    fastjson的SerializerFeature序列化属性
    java加密方式
    Java 8实现BASE64编解码
    mysql分库分表总结
    Rest使用get还是post
    tomcat结合nginx
    java网站架构设计
    Itext中 根据html生成Word文件,包含图片
  • 原文地址:https://www.cnblogs.com/aslmer/p/13873657.html
Copyright © 2011-2022 走看看