python day14 文件操作

目录:

文件操作

文件:

什么是文件

  1. 文件是用于数据存储的单位
  2. 文件通常用来长期存储设置
  3. 文件中的数据是以字节为单位进行顺序存储的

文件的缺点

内存的读写速度快/ 磁盘的读写速度慢

文件的操作步骤:

  1. 打开文件
  2. 读写文件
  3. 关闭文件

文件的打开函数 open

  1. 格式:
    open(file, mode=’rt’) 用于打开一个文件,返回此文件流对象,如果打开失败会触发IOError错误

  2. 文件的关闭方法
    F.close() # 关闭文件,释放系统资源

  3. 示例见:

    
    # 此程序示意文件的打开和关闭
    
    file = open("mynote.txt")
    print("打开文件成功")
    
    # 通常在此进行读写文件内容
    
    
    # 关闭文件
    
    file.close()
    print("文件已关闭")

文件操作分为两种类型的操作:

  1. 文本文件操作
  2. 二进制文件操作

文本文件模式:

  1. 打开模式:mode = ‘t’
    1. 默认文件中存储的内容为字符数据,以行为单位读取,采用系统默认的换行符进行分隔
  2. 对于文本文件的读写,需要用字符串(str) 进行读取和写入数据

各操作系统默认的换行符:

环境 换行符
Linux ‘\n’
Windows ‘\r\n’
旧的Macintosh ‘\r’
新的Mac OS ‘\n’

练习:

  1. 将如下数据用文本编辑器sublime 写入到data.txt文件中
    数据如下:
    小张 13888888888
    小李 13999999999
    小赵 13666666666
  2. 写程序读取数据,打印出姓名和电话号码,格式如下:
      姓名: 小张, 电话: 13888888888

练习:

  1. 写一个程序,读入任意行的文字信息,当输入空行时结束输入.
    将读入的字符串存于列表中,然后将列表里的内容写入的文件 input.txt 中

  2. 写一个程序, 从input.txt中读取之前输入的数据,存入列表中.再加上行号进行打印显示
     显示格式如下 :
        第1行: zzzzzzz
    第2行: xxxxxxx

答案见:

  1. file_read.py

    
    # 此程序示意文件的打开时的错误处理
    
    
    try:
        file = open("mynote.txt")
        print("打开文件成功")
    
        # 通常在此进行读写文件内容
        s = file.readline()
        print("第一行内容是: ", s)
    
        # 关闭文件
        file.close()
        print("文件已关闭")
    except IOError:
        print("文件打开失败")
    
  2. write_data.py

    try:
        f = open("mydata.txt", 'w')  # 以只写的方法打开文件
        print("打开文件成功")
        f.write("我是第一行数据\n")
        f.write("我是第二行数据\n")
        f.writelines(['我是第三行\n', '我是第四行\n', 'five'])
    
        f.close()
    except IOError:
        print("打开文件失败")
    
    

二进制文件操作

  1. 打开模式 : ‘b’
    默认文件中存储的都是以字节为单位的二进制数据,通常有人为规定的格式,需要以字节为单位进行读写
    对二进制文件的读写,需要用字节串(bytes)进行操作
  2. 方法

    1. F.read(n) 方法
      read(n) n代表最大字节数
    2. F.readline()
    3. F.readlines()
        对于二进制文件,F.read()/F.readline返回字节串
      F.readlines() 返回字节串列表
    4. F.write(x)方法
      对于二进制文件,x必须为字节串
    5. F.seek(offset, whence=0) 函数

      1. offset 偏移量:
        大于0的数代表向文件末尾方向移动
        小于0的数代表向文件头方向移动
      2. whence 相对位置

        0:代表从文件头开始偏移
        1: 代表从当前位置开始偏移
        2: 代表从文件尾开始偏移

      3. 示例见:

      
      # 此示例示意seek方法的用法
      
      f = open('alpha_number.bin', 'rb')  # 二进制读
      b = f.read(5)
      
      # f.seek(10, 0)       
      
      f.seek(-10, 2)
      
      # f.seek(5, 1) 
      
      b = f.read(5)
      print(b)
      f.close()

汉字编码:

国标系列:

编码名 作用
GB18030 (2字节或4字节编码,共27533个)
GBK (2字节编码,共21003个)
GB2312 (2字节编码,共6763个汉字)(常用于Windows)

国际标准:

编码名 作用
UNICODE16/UNICODE32 <<<—>>> UTF-8 (常用于Linux / Mac OS X / IOS / Android)

UTF-8(8-bit Unicode Transformation Format)

编码字符串:

‘gb2312’
‘gbk’
‘gb18030’
‘utf-8’
‘ascii’
用于 encode和  decode方法中

编码注释:

在源文件的第一行或第二行写入如下格式的内容
# -- coding:gbk --

# -- coding:utf-8 --
是告诉python3解释执行器当前文件的编码是什么

练习:

  1. 修改原来的学生管理系统的代码,将其为分模块
    建议:

    1. 把显示菜单放在一个模块内
    2. 把对学生的操作放在一个模块内
    3. 把主事件循环while True 选择输入放在一个模块内
  2. 在菜单上添加两个功能:
    | 9) 保存学生信息到文件(si.txt) |
    | 10) 从文件中读取数据(si.txt) |
    建议用逗号”,”分隔数据:
    # file: si.txt
    xiaozhang,21,98
    xiaoli,22,100

标准输入输出文件\

  1. 文件
    sys.stdin
    sys.stdout
    sys.stderr
    模块名: sys
  2. 说明:
    每一个python程序启动后都会有以上三个文件已经打开供我们使用
  3. 示例见:

    
    # 此程序示意标准输出sys.stdout 和标准错误输出 sys.stderr
    
    import sys  # 导入sys模块
    sys.stdout.write("hello world\n")
    
    # 等同于 print('hello world', end='\n')
    
    
    # 以下程序会出错
    
    
    # sys.stdout.close()
    
    
    # print("程序结束!")
    
    sys.stderr.write("我的出现是个错误!\n")
    
    
    # 此示例示意sys.stdin的用法
    
    import sys
    print("请输开始输入:")
    
    # s = sys.stdin.read(10)  # 默认从键盘获取数据
    
    
    # print(s)
    
    
    # s2 = sys.stdin.read(10)
    
    
    # print(s2)
    
    s = sys.stdin.read()
    print("您刚才输入的是:", s)
    

    Linux下 Ctrl + D输入文件结束符

猜你喜欢

转载自blog.csdn.net/luohongtucsdn/article/details/80691733
今日推荐