08-文件操作

文件操作

目录管理(os)

  • 示例

    
    # 执行系统命令
    
    
    # 清屏
    
    
    # os.system('cls')
    
    
    # 调出计算器
    
    
    # os.system('calc')
    
    
    
    # 查看操作系统类型
    
    
    # nt:表示windows,posix:表示类unix
    
    
    # print(os.name)
    
  • 查看当前工作目录

    import os
    
    #查看当前工作目录
    
    print(os.getcwd())
  • 创建目录:mkdir

    
    # os.mkdir('test')
    
    
    # 不能创建中间目录
    
    os.mkdir('a/b/c')
  • 创建目录:makedirs

    
    # 可以创建中间目录
    
    os.makedirs('a/b/c')
  • 删除目录:rmdir

    
    # 删除目录:只能是空目录
    
    
    # os.rmdir('test')
    
    
    # 不能删除非空目录
    
    os.rmdir('a')
  • 修改名称:rename

    
    # 重命名:目录和文件都可以
    
    
    # os.rename('a', 'aa')
    
    os.rename('test.py', 't.py')
  • 查看文件信息:stat

    
    # 查看文件信息:可以是目录
    
    print(os.stat('t.py'))
    print(os.stat('aa'))
  • 查看目录文件信息:listdir

    
    # 查看目录文件信息
    
    print(os.listdir(os.getcwd()))
  • path:关于目录相关的模块

    from os import path
    import os
    
    
    # 目录拼接
    
    
    # print(path.join('abc/def/', 'hello.py'))
    
    
    
    # 提取目录
    
    
    # print(path.dirname('abc/def/hello.py'))
    
    
    # print(path.dirname(os.getcwd()))
    
    
    
    # 提取文件名
    
    
    # print(path.basename('abc/def/hello.py'))
    
    
    # print(path.basename(os.getcwd()))
    
    
    
    # 切割路径与文件名
    
    
    # print(path.split('abc/def/hello.py'))
    
    
    # dir, name = path.split('abc/def/hello.py')
    
    
    # print(dir, name)
    
    
    
    # 切割文件名与后缀
    
    
    # print(path.splitext('hello.py'))
    
    
    # print(path.splitext('abc/def/hello.py'))
    
    
    
    # 判断文件是否存在,可以是目录
    
    
    # print(path.exists('aa'))
    
    
    
    # 判断是否是目录文件
    
    
    # print(path.isdir('t.py'))
    
    
    # print(path.isdir('aa'))
    
    
    
    # 判断是否是普通文件
    
    
    # print(path.isfile('t.py'))
    
    
    # print(path.isfile('aa'))
    
    
    
    # 获取文件大小,仅限于文件
    
    print(path.getsize('t.py'))
    
    # 对于目录会有问题
    
    print(path.getsize('aa'))

    练习:统计一个目录的大小,需要使用递归

文件管理

  • 打开文件(open)

    • 示例
    fp = open('00-test.txt', 'r')
    • 参数
    file:操作的文件名
    mode:打开的方式
    endoding:编码方式,通常不用指定,系统会自动识别
    • 打开方式
    r:只读方式,文件不存在会报错
    w:只写方式,文件不存在则创建,存在则清空
    a:追加方式,文件不存在则创建,存在直接打开(不会清空),只能向最后追加
    r+:在r方式基础上添加可写的权限
    w+:在w方式基础上添加可读的权限
    a+:在a方式基础上添加可读的权限
    
    在上面的打开上添加一个字符b,表示以二进制的方式进行操作:rb、wb、ab、rb+、wb+、ab+
    说明:没有添加b的打开方式,默认的读写都是以字符串形式操作的, 带b的是以bytes形式进行的
    • 编码方式
    ASCII:美国信息交换标准代码(128ansi:扩展的ASCII(256)
    gb2312:中国的ansi
    gbk:扩充的gb2312
    
    unicode:万国码,将所有国家的所有字符全部进行统一编码
    utf-8:一种可变长度的unicode实现方案,而且对中文支持比较友好。
  • 关闭文件

    fp.close()
  • 文件读写

    
    # 判断是否可读
    
    
    # print(fp.readable())
    
    
    # 读取指定长度内容
    
    
    # content = fp.read(5)
    
    
    # 读取一行
    
    
    # content = fp.readline()
    
    
    # 读取所有的行,返回一个列表
    
    
    # content = fp.readlines()
    
    
    
    # 判断是否可写
    
    
    # print(fp.writable())
    
    
    # 写入内容
    
    
    # fp.write('hello')
    
  • 操作位置

    
    # 文件操作位置
    
    
    # print(fp.tell())
    
    
    
    # 设置操作位置
    
    
    # 参数1:偏移量
    
    
    # 参数2:参考位置,0:开头,1:当前位置,2:结束
    
    
    # 以bytes形式读写seek没有问题,以str型是读写的seek只能设置从开头偏移
    
    fp.seek(5, 0)
  • 文件删除

    os.remove('文件名')

    练习:删除一个目录,需要使用递归

bytes类型

  • 示例:

    
    # s = b'hello'
    
    
    # print(s)
    
    
    # print(type(s))
    
    
    
    # 编码:str => bytes
    
    s = 'hello'.encode('utf-8')
    print(type(s))
    
    
    # 解码:bytes => str
    
    b = s.decode('utf-8')
    print(b, type(b))

自行学习

  • StringIO
  • BytesIO

    环境变量

  • 设置:set 名称=值

  • 获取:set 名称

  • 代码:

    import os
    
    
    # 获取环境变量
    
    
    # print(os.environ['path'])
    
    
    # 不存在也不报错
    
    
    # print(os.environ.get('abc', 'hello'))
    
    
    # 等价于上面的式子
    
    print(os.getenv('abc', 'world'))  

目录表示

  • 相对目录:有参考的目录
    • ’.’表示当前目录,’./’通常可以省略
    • ‘..’表示上一级目录,上上一级目录:../../
  • 绝对目录:
    • windows:盘符开头的目录
    • 类unix:以’/’开头的目录
  • 目录分隔符
    • windows:’/’ 或 ‘\’
    • 类unix:’/’
    • 建议:统一使用’/’

练习:路径信息全部需要拼接

  • 实现一个文件的拷贝功能,注意:大文件的问题

  • 删除一个目录

  • 统计一个目录的大小

  • 拷贝一个目录

  • 移动一个目录

  • 整理目录

    • 一个目录下有各种文件,包括文件夹
    • 将所有的目录文件都放到DIRS目录下
    • 所有无后缀的文件统一放到OTHERS目录下
    • 有后缀的文件放到后缀大写的目录下
    • 示例:
    整理前:
    test/
    dir1/
    dir2/
    dir3/
    1.py
    2.py
    3.txt
    4.pdf
    123
    456
    整理后:
    test/
    DIRS/
        dir1/
        dir2/
        dir3/
    OTHERS/
        123
        456
    PY/
        1.py
        2.py
    TXT/
        3.txt
    PDF/
        4.pdf

猜你喜欢

转载自blog.csdn.net/qq_42795565/article/details/81351731
今日推荐