标准库之os与sys

2023-01-05 Python进阶

这个算是比较实用的知识了,能完成一些常规的文件操作。比如网上下载的视频,每一个文件名后面都有广告,想把这种固定的广告去掉,可以采用os中的文件重命名功能,可以配合递归文件夹来实现。

# os的文件与目录函数介绍

函数名 参数 介绍 举例 返回值
getcwd 返回当前路径 os.getcwd() 字符串
listdir path 返回指定路径下所有的文件或文件夹 os.listdir('c://windows') 列表
makedirs Path mode 创建多级文件夹 os.makedirs('d://code/py')
removedirs path 删除多级文件夹 os.removedirs('d://imooc/py')
rename oldname,newname 重命名 os.rename('d://imooc', 'd://im')
rmdir path 只删除空文件夹 os.rmdir('d://imooc')

# os.path模块常用函数

函数名 参数 介绍 举例 返回值
exists path 文件或路径是否存在 os.path.exists( 'd://' ) bool
isdir path 是否是路径 os.path.isdir( 'd://' ) bool
isabs path 是否是绝对路径 os.path.isabs( 'test' ) bool
isfile path 是否是文件 os.path.isfule( 'd://test.txt' ) bool
join path,path* 路径字符串合并 os.path.join( 'd://', ''test ) 字符串
split Path 以最后一层路径为基准切割 os.path.isabs( 'test' ) 元组

# sys中的常用方法

函数名 参数 介绍 举例 返回值
modules py启动时加载的模块 sys.modules() 字典
path 返回当前py的环境路径 sys.path() 列表
exit arg 退出程序 sys.exit(0)
getdefaultencoding 获取系统编码 sys.getdefaultencoding() 字符串
platform 获取当前系统平台 sys.platform() 字符串
version(属性) 获取python版本 sys.version() 字符串
argv *args 程序外部获取参数 sys.argv 列表

# 案例:删除文件名中无用的数据

import sys
import os

args = sys.argv
args.remove(args[0])
directory = ''
ch = ''  # 要替换的字符
if len(args) == 1:
    directory = os.getcwd()
    ch = args[0]

elif len(args) >= 2:
    directory = args[0]
    if not os.path.isdir(directory):
        print('参数1不是一个合法的路径')
        sys.exit(0)
    ch = ' '.join(args[1:]).strip()
else:
    print('程序使用说明:')
    print('1.传递一个参数,将当前目录下所有文件、文件夹名称中包含此参数的部分替换为空字符')
    print('2.传递两个参数,将参数1目录下下所有文件、文件夹名称中包含参数2的部分替换为空字符')
    sys.exit(0)


# 生成n个空格
def print_space(n):
    for i in range(n):
        print(" ", end="")


# 1.遍历文件夹列表
def test(param, i):
    if os.path.isfile(param):
        return
    for direm in os.listdir(param):
        print_space(i)
        print(direm, end="")
        if os.path.isfile(os.path.join(param, direm)):
            pass
            os.rename(os.path.join(param, direm), os.path.join(param, direm.replace(ch, '')))
            print(f' ➡ {direm.replace(ch, "")}')
        else:
            print()
            test(os.path.join(param, direm), i + 2)


for dire in os.listdir(directory):
    test(os.path.join(directory, dire), 2)
    print(dire)
上次更新: 1 年前