zoukankan      html  css  js  c++  java
  • python程序设计——文件操作

    分类

    1.文本文件

    存储常规字符串,由若干文本行组成,每行以换行符' '结尾

    2.二进制文件

    把对象以字节串存储,常见的图形图像、可执行文件、数据库文件office文档等

     1 #创建文件
     2 >>fw = open('sample.txt','w+',encoding='utf-8')
     3 >>s = '文本读取方式
     sample.txt w+
    '
     4 >>fw.write(s)
     5 >>fw.close()
     6 #查看sample.txt
     7 文本读取方式
     8  sample.txt w+
     9 
    10 #建议形式,关键字with可以自动管理资源
    11 >>s = '文本读取方式
     sample.txt w+
    '
    12 >>with open('sample.txt','w+',encoding='utf-8') as fw:
    13 >>        fw.write(s)
    14 # 判断文件对象是否关闭
    15 >>fw.colsed
    16 True
    17 
    18 #添加文件内容
    19 >>s = 'hello
    '
    20 >>with open('sample.txt','a+',encoding='utf-8') as fa:
    21 >>        fa.write(s)
    22 文本读取方式
    23  sample.txt w+
    24 hello
    25 
    26 # 读取文件内容
    27 # 读取一行
    28 >>fread = open('sample.txt','r',encoding='utf-8')
    29 >>fread.readline()
    30 '文本读取方式
    '
    31 >>fread.readline()
    32 ' sample.txt w+
    '
    33 >>fread.readline()
    34 'hello
    '
    35 
    36 # 一次读取所有行
    37 >>fread = open('sample.txt','r',encoding='utf-8')
    38 >>fread.readlines()
    39 ['文本读取方式
    ', ' sample.txt w+
    ', 'hello
    ']
    40 
    41 #读取固定字符个数
    42 >>fread = open('sample.txt','r',encoding='utf-8')
    43 >>fread.read(4)
    44 '文本读取'
    45 >>fread.close()

    可以使用dir() 查看与对象相关的方法,使用help()查看方法的用法

    1 >>fread = open('sample.txt','r',encoding='utf-8')
    2 >>fread.colse()
    3 >>dir(fread)
    4 #查看read()函数用法
    5 >>help(fread.read)

    文件序列化

    序列化,就是把内存中的数据在不丢失数据类型的情况下,转化为二进制形式的过程

    1.使用pickle模块

    Pickle是常用并且快速的二进制文件序列化模块

     1 #使用pickle dump依次写入二进制文件
     2 import pickle
     3 f = open('sample_pickle.dat','wb')
     4 
     5 alist = [[2,3,4],[6,7,8]]
     6 aset = {'a','b','c'}
     7 atuple = (-5,-3,-1)
     8 astr = '北京欢迎你,welcome!'
     9 adic = {'name':'jin','sex':None}
    10 try:
    11     pickle.dump(alist,f)
    12     pickle.dump(aset,f)
    13     pickle.dump(atuple,f)
    14     pickle.dump(astr,f)
    15     pickle.dump(adic,f)
    16 except:
    17     print('write error')
    18 finally:
    19     f.close()
    20 
    21 #使用Pickle load依次读取二进制文件
    22 fr = open('sample_pickle.dat','rb')
    23 try:
    24     x=pickle.load(fr)
    25     print(x)
    26     x=pickle.load(fr)
    27     print(x)
    28     x=pickle.load(fr)
    29     print(x)
    30     x=pickle.load(fr)
    31     print(x)
    32     x=pickle.load(fr)
    33     print(x)
    34 except:
    35     print('read error')
    36 finally:
    37     fr.close()

    2.使用struct模块

     1 import struct
     2 import binascii
     3  
     4 values = (1, b'good', 1.22) #字符串必须为字节流类型
     5 s = struct.Struct('I4sf')
     6 packed_data = s.pack(*values) #序列解包
     7 unpacked_data = s.unpack(packed_data)
     8   
     9 print('Original values:', values)
    10 print('Format string :', s.format)
    11 print('Uses :', s.size, 'bytes')
    12 print('Packed Value :', binascii.hexlify(packed_data))
    13 print('Unpacked Type :', type(unpacked_data), ' Value:', unpacked_data)
    14 
    15 out:
    16 Original values: (1, b'good', 1.22)
    17 Format string : b'I4sf'
    18 Uses : 12 bytes
    19 Packed Value : b'01000000676f6f64f6289c3f'
    20 Unpacked Type : <class 'tuple'>  Value: (1, b'good', 1.2200000286102295)
  • 相关阅读:
    ASP.NET常用技巧方法代码断
    130道ASP.NET面试题
    ASP.NET 数据绑定常用代码及其性能分析
    asp.net C# 时间格式大全
    ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
    经典算法,每个语言都出现的算法
    Asp.net 后台添加CSS、JS、Meta标签
    ASP.NET 窗体间传值实现方法详解
    asp.net 常用的几种调用存储过程的方法
    codeforces 868C
  • 原文地址:https://www.cnblogs.com/feinaio2017/p/8727611.html
Copyright © 2011-2022 走看看