Skip to content

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

os的文件与目录函数介绍

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

os.path模块常用函数

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

sys中的常用方法

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

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

python
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)