python IO操作

匿名 (未验证) 提交于 2019-12-02 22:56:40
  • 读写文件是常见的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()
     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\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...‘ # 十六进制表示的字节
  • 字符编码

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

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

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\nHi!\nGoodbye‘)   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‘)

原文:https://www.cnblogs.com/yangaoteng666/p/9274247.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!