Python - 文件和目录操作

以下内容参考自《Python爬虫开发与项目实战》。

在Python中对文件和目录的操作经常使用到os模块和shutil模块,常用的方法如下所示:

  • 获得当前Python脚本工作的目录路径:os.getcwd() 。e.g.

    >>> os.getcwd()
    'D:\\Code\\Python'
    
  • 获取文件/目录

    • 列举指定目录下的所有文件和目录名:os.listdir(path)

    • 分离路径的目录名和文件名:os.path.split(path)

    • 分离路径的文件名和扩展名:os.path.splitext(path)。e.g.

      >>> os.path.split('D:\\Code\\Python\\a.py')
      ('D:\\Code\\Python', 'a.py')
      >>> os.path.splitext('D:\\Code\\Python\\a.py')
      ('D:\\Code\\Python\\a', '.py')
      
    • 获取目录名:os.path.dirname(path)

    • 获取文件名:os.path.basename(path)。e.g.

      >>> os.path.dirname('D:\\Code\\Python\\a.py')
      'D:\\Code\\Python'
      >>> os.path.basename('D:\\Code\\Python\\a.py')
      'a.py'
      
  • 检验文件/目录

    • 检验路径是否为文件:os.path.isfile(path)
    • 检验路径是否为目录:os.path.isdir(path)
    • 检验路径是否为绝对路径:os.path.isabs()
    • 检验路径是否存在:os.path.exists()
  • 创建目录

    • 创建多级目录:os.makedirs(path)
    • 创建单个目录:os.mkdir(path)
  • 删除文件/目录

    • 删除一个文件:os.remove(path)

    • 删除多级目录:os.removedirs(path)。e.g.
      存在路径D:\Code\python\b\c,其中c为空目录,b目录下只有c,那么使用以下命令可以删除目录b和c:

      >>> os.removedirs('D:\\Code\\Python\\b\\c')
      
    • 删除单个目录:os.rmdir(path)。e.g.
      参数使用以上的路径只能删除目录c,目录b并不会删除:

      >>> os.rmdir('D:\\Code\\Python\\b\\c')
      
    • 删除单个目录:shutil.rmtree(path)。不管目录是否为空都可以删除。e.g.
      在上例中,即使目录b下还存在目录c,也可以使用以下命令删除目录b(当然目录c也会一同被删除):

      >>> shutil.rmtree('D:\\Code\\Python\\b')
      
  • 复制文件/目录:

    • 复制目录:shutil.copytree(old_path, new_path)old_pathnew_path都只能是目录,而且new_path必须不存在。
    • 复制文件:shutil.copyfile(old_path, new_path)old_pathnew_path都只能是文件。
    • 复制文件:shutil.copy(old_path, new_path)old_path只能是文件,但new_path既可以是文件,也可以是目录(该目录下创建一个同名文件)。
  • 移动目录/文件

    • 移动目录/文件:shutil.move(old_path, new_path)
    • 重命名目录/文件:os.rename(old_path, new_path)
  • 获取文件大小:os.path.getsize(path)

  • 获取文件属性:os.stat(path)

  • 修改文件权限和时间戳:os.chmod(path, mode)
    权限mode可以由以下标志位的或运算组成:

    • stat.S_IXOTH: 其他用户有执行权0o001
    • stat.S_IWOTH: 其他用户有写权限0o002
    • stat.S_IROTH: 其他用户有读权限0o004
    • stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
    • stat.S_IXGRP: 组用户有执行权限0o010
    • stat.S_IWGRP: 组用户有写权限0o020
    • stat.S_IRGRP: 组用户有读权限0o040
    • stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
    • stat.S_IXUSR: 拥有者具有执行权限0o100
    • stat.S_IWUSR: 拥有者具有写权限0o200
    • stat.S_IRUSR: 拥有者具有读权限0o400
    • stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
    • stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
    • stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
    • stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
    • stat.S_IREAD: windows下设为只读
    • stat.S_IWRITE: windows下取消只读
  • 读取和设置环境变量:os.getenv()os.putenv()

  • 当前使用的平台:os.name。Windows是'nt',Linux/Unix是'posix'

  • 当前平台使用的行终止符:os.linesep。Windows使用'\r\n',Linux/Unix使用'\r'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值