python 目录,文件,系统 操作

简述

判断操作系统, {列举, 复制, 重命名, 删除} * {目录,文件} 等.
windows 下, ‘d:\a\b’ 与 ‘d:/a/b’ 等价.

自带 platform 库

import platform
platform.system() #Windows
platform.platform() #'Windows-10-10.0.15063-SP0'

shutil 库

即 sh-util , 提供了文件,目录的增删复制等操作.
比如原始的os.rmdir(path), 遇到非空的目录就不能删, 而用了这个库, 就可以直接删掉了.

  • shutil.rmtree(path)
    递归地删除一个目录树.

自带 os 模块

基础操作

os.path.join(path, file_or_dir)
路径拼接
os.path.isdir(file_path)
判断是否为目录
os.path.isfile(file_path)
判断是否为文件

目录操作

os.listdir(path)
返回path目录下的文件或文件夹, 只有一层, 不作递归.
os.rmdir(path)
删除path指定的空目录,如果目录非空,则抛出一个OSError异常.

文件操作

os.remove(path)
删除路径为path的文件。如果path 是一个目录,将抛出OSError.
os.rename(src, dst)
重命名, 目录/文件 均适用.

例子

import os
from os.path import isdir,isfile

# 列举path下的目录和文件, 不递归.
def find_files_and_directories(path='d:/out/'):
    files = []
    dirs = []
    for file_or_dir in os.listdir(path):
        if isdir(os.path.join(path, file_or_dir)):
            dirs.append(file_or_dir)
        elif isfile(os.path.join(path, file_or_dir)):
            files.append(file_or_dir)
    print('files:' + str(files))
    print('dirs:' + str(dirs))

# 递归地拿到一个目录下的所有文件    
def find_files_recursively(path='d:/out/'):
    files = []
    for file_or_dir in os.listdir(path):
        if isdir(os.path.join(path, file_or_dir)):
            files.extend(find_files_recursively(os.path.join(path, file_or_dir)))
        elif isfile(os.path.join(path, file_or_dir)):
            files.append(os.path.join(path, file_or_dir))
    return files
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值