Python中的IO编程

作者: 墨马 | 来源:发表于2019-05-16 22:32 被阅读9次

    1.文件读写

    try:
      f = open('/path/t.txt','r')
      print(f.read())
    finaly:
      if f:
        f.close()
    
    with  open('/path/t.txt','r') as f:
      print(f.read())
    

    在python中内置了with语句实现文件关闭,是代码更加简介。上述俩种方法会实现相同的功能。

    f = ('/path/g.txt','r',encoding='gbk',errors='ignore')
    

    其中encoding表示文件的编码,erroes表示遇到编码错误的处理方法。当然,最简单的方法就是直接忽略。

    字符 含义
    r 读取文本文件
    rb 读取二进制文件
    w 写入文本文件
    wb 写入二进制文件
    a 以追加的方式写入

    2.StringIO和BytesIO

    StringIO

    在内存中读写str

    from io import StringIO
    f = StringIo()
    f.write('hello')
    f.write(' ')
    f.write('world!')
    print(f.getvalue())
    #hello world!
    
    from io import StringIO
    f = StringIo('hellio\n Hi')
    while true:
      s = f.readline() == ' '
      if s == ' ':
        break
      else 
        print(s.strip())
    
    BytesIO

    BytelsIO用于操作二进制数据

    from io import BytesIO 
    f = BytesIO() 
    f.write('中文'.encode('utf-8'))
    print(f.getvalue())
    # b'\xe4\xb8\xad\xe6\x96\x87'
    f.read();
    # b'\xe4\xb8\xad\xe6\x96\x87'
    

    操作文件和目录

    python内置的os模块可以直接调用操作系统提供的接口函数。

    import os
    os.name
    'posix'  #代表Linux,Unix,Mac OS X
    'nt'       #Windows
    os.uname()
    #获取详细的系统信息,Windows系统不支持
    
    环境变量

    操作系统中定义的环境变量保存在os.environ中

    os.environ

    获取某个环境变量值使用os.environ.get('key')

    os.environ.get('key'):
    #'C:\\Windows'
    
    操作文件和目录
     #查看当前目录的绝对路径
    os.path.abspath('.')  
    #表示完整的路径
    os.path.join('/Users/michael','testdir')
    #创建目录
    os.mkdir( '/Users/michael','testdir')
    #删除目录
    os.rmdir( '/Users/michael','testdir')
    

    注意:俩个路径合成一个时使用os.path.join()函数,不要使用简单的字符串拼接
    os.path.join()在Linux/Unix/Mac和在windows下返回的结果不一样。

    os.path.split( '/Users/michael/file.txt')
    #拆分路径,后一部分为最后级别的目录或文件名
    os.rename('test.txt','test.py')
    #重命名
    os.remove('test.py')
    #删掉文件
    

    遗憾的是os模块中不存在复制函数,但shutil中提供了copyfile()函数。
    用python的特性过滤文件

    [x  for x   in  os.listdir('.') if  os.path.isdir(x)]
    ['.lein','.local','.m2','.npm', '.ssh','.Trash','.vim', 'Applications', 'Deskt op',...]
    列出所有的.py文件
    [x  for x   in  os.listdir('.') if  os.path.isfile(x)   and os.path.splitext(x)[1]=='. py'] 
    ['apis.py', 'config.py','models.py','pymonitor.py',‘test_db.py','urls.py','wsg iapp.py']
    

    相关文章

      网友评论

        本文标题:Python中的IO编程

        本文链接:https://www.haomeiwen.com/subject/xwoiaqtx.html