python IO操作

Posted yangaoteng666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python IO操作相关的知识,希望对你有一定的参考价值。

python io编程

  • 读写文件是常见的io操作,python内置了读写文件的函数,用法与C是兼容的。
  • 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘.

    读文件

  1. 要以读文件模式打开一个文件列表,使用open()函数,并传入文件名和标识符:

     f = open(r‘.1.txt‘,‘r‘)
    • 这是第一个r表示引号里面的东西不转义,第二个r 表示读。
  • 如果文件成功打开,我们调用read方法可以一次性读取全部内容:

      f = open(r‘.1.txt‘,‘r‘)
      f.read()
      ------------
      ‘hello,word!‘
  1. 最后一步调用close()方法关闭文件。

     f.close()

    由于读写文件时有可能发生错误,一旦出错,后面的f.close()就不会被调用。所有我们使用try.....finally来实现:

     try:
         f =open(r‘.1.txt‘,‘r‘)
         print(f.read())
     finally:
         if f:
             f.close()
  • 每次这么写就太繁琐了,所以,python引出了with语句来自动调用close()方法:

      with open(r‘.1.txt‘,‘r‘) as f:
           print(f.read())
  • 调用read会一次性读取文件的全部内容,如果文件有10G,内存就炸了。
    • read(size) 每次读取size个字节的内容
    • readline()每次读取一行内容
    • readlines()一次读取所有内容并返回list
  • 读取二进制文件

      >>> f = open(‘/Users/michael/test.jpg‘, ‘rb‘)
      >>> f.read()
      b‘xffxd8xffxe1x00x18Exifx00x00...‘ # 十六进制表示的字节
  • 字符编码

      f =open(‘.1.txt‘,‘r‘,encoding = ‘gbk‘,errors=‘ignore‘)
    • errors 会忽略错误编码字符
  • 写文件

      f = open(‘.1.txt‘,‘w‘)
      f.write(‘hello,word‘)
      f.close()

python io操作标识符

  • ‘r‘ 开放阅读(默认)
  • ‘w‘打开写入,先截断文件
  • ‘x‘ 打开以进行独占创建,如果文件已存在则失败
  • ‘a‘ 打开以进行写入,如果存在则附加到文件的末尾
  • ‘b‘ 二进制模式
  • ‘t‘ 文字模式(默认)
  • ‘+‘ 打开磁盘文件进行更新(读写)

StringIO 和ByterIO

StringIO

  • 很多时候,数据读写不一定是文件,也可能在内存中读取
  • stringIO顾名思义就是在内存中读取str。

      from io import StringIO
      f = StringIO()
      f.write(‘hello‘)
      f.write( ‘ ‘)
      print(f.getvalue())
    • getvalue()方法用于获得写入后的str。
  • 要读取StringIO,可以初始化StringIO,然后,像读文件一样读取:

      from io import StringIO
      f = StringIO(‘Hello
    Hi!
    Goodbye‘)
      while True:
          s = f.readline()
          if s == ‘‘:
              break
          print(s.strip())

    BytesIO

  • BytesIO实现了在内存中读取bytes,我们创建一个BytesIO,然后写入一些bytes

      from io import BytesIO
      f = BytesIO()
      f.write(‘中午‘.encode(‘utf-8‘))
      print(f.getvalue())

操作文件和目录

  • os的基本功能

      import os
      os.name
      ---------
      ‘nt‘    
  • 在操作系统中定义的环境变量,全部保存在os.environ这个变量中,可以直接查看:

      import os
      os.environ
      # get 获取单个环境的变量
      os.environ.get(‘PATH‘)

    操作文件和目录

  • 操作文件和目录的函数一部分放在os模块中,一部分放在了os。path

      # 查看当前目录的绝对路径
      os.path.abspath(‘.‘)
      # 在在某个目录下创建一个新目录,首先把新目录的完整路径表示出来
      a=os.path.join(‘/Users/michael‘,‘testdir‘)
      # 删除一个目录
      os.rmdir("a")
      # 创建一个目录
      os.mkdir("a")
  • 把两个路径合成一个时,不要直接拼接字符,而要通过os.path.join().这样可以正确处理两个操作系统路径分隔符不同的情况
  • 同样,才分路径的时候用os.path.split()函数

      os.path.split(‘/Users/michael\testdir.txt‘)
      (‘/Users/michael‘, ‘testdir.txt‘)
  • os.path.splitext可以直接获得文件的扩展名

      os.path.splitext(‘/Users/michael\testdir.txt‘)
      (‘/Users/michael\testdir‘, ‘.txt‘)

以上是关于python IO操作的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:python3,代码片段(2017)

如何用python实现异步io

Python异步IO

csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段

Python基础入门自学——22--异步IO