展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python常用标准库之os模块与shutil模块的使用方法

Python常用标准库之os模块与shutil模块的使用方法

系统模块importos系统模块用于对系统进行操作。常用方法os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作、文件的删除创建等详细资料可以参考官方文档。system--执行系统命令参数的数据类型是字符串格式,内容是系统指令。执行时,直接返回系统输出。importosos.system('ifconfig')#Linux系统shell命令os.system('ipconfig')#Windows系统dos命令popen--执行系统命令在使用syst

本文目录

    系统模块

    import os

    系统模块用于对系统进行操作。

    常用方法

    os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作、文件的删除创建等详细资料可以参考官方文档。

    system -- 执行系统命令

    参数的数据类型是字符串格式,内容是系统指令。执行时,直接返回系统输出。

    import os
    
    os.system('ifconfig')  # Linux系统shell命令
    os.system('ipconfig')  # Windows系统dos命令

    popen -- 执行系统命令

    在使用system执行系统命令的时候,发现在windows系统下执行命令时,中文字符发生了乱码!这是因为windows为减少占用,对中文系统使用GB格式编码,而python中默认使用的UTF-8编码,编码不兼容导致了乱码问题。

    popen也可以执行系统指令,但是和system的工作方式不一样。

    popen执行系统指令之后返回对象,通过内置方法read读出字符串,这个过程中read方法自动的将其它编码转换成为了UTF-8格式,所以popen相比system有更高的可读性和兼容性。

    而在实际的使用过程中,发现popen不存在阻塞,即在执行一些长时间系统任务的时候,不会等待系统任务结束,python代码就会继续执行,在某些场景下会导致问题的出现。比如在我的一个场景中,要将一个文件夹中的文件删除,之后在重写一份文件,使用popen导致文件还没有删除,而代码继续执行使新文件已经写好,而这个时候popen又将我新写的文件删除,导致我的程序在后续出现bug。所以,如果没有可读性的要求,我建议优先使用system方法。

    import os
    
    obj = os.popen('ipconfig')
    res = obj.read()
    print(res)

    listdir -- 获取指定文件夹中的所有文件

    获取指定文件夹中的所有文件(包括文件和文件夹),返回文件的名称,以列表的形式返回,默认情况为当前路径。

    import os
    
    # 默认为当前路径
    files = os.listdir()
    print(files)
    
    # 相对和绝对路径都可以使用
    files = os.listdir('C:')
    print(files)

    walk -- 递归遍历目录

    递归遍历指定目录,包括其所有的子目录,返回一个迭代器对象。迭代器每次返回一个元组,元组为三个元素:

    • 第一个元素为字符串,表示当前目录路径;

    • 第二个元素为列表,表示当前目录下的所有文件夹名(不包括子目录中的);

    • 第三个元素为列表,表示当前遍历目录中的所有文件名(不包括子目录中的);

    主要参数含义
    top指定目录;
    topdown正序遍历还是倒序遍历,默认为True(正序);

    请看下例,目录结构如下:

    Python常用标准库之os模块与shutil模块的使用方法

    import os
    
    path = r'C:\Users\MSR\Desktop\test'
    
    # 正序遍历
    res = os.walk(path)  # 返回迭代器
    for i in res:
        print(i)
    r"""
    ('C:\\Users\\MSR\\Desktop\\test', ['1', '2'], ['root.txt'])
    ('C:\\Users\\MSR\\Desktop\\test\\1', ['111'], ['1.txt'])
    ('C:\\Users\\MSR\\Desktop\\test\\1\\111', [], ['11.txt'])
    ('C:\\Users\\MSR\\Desktop\\test\\2', [], ['2.txt'])
    """
    
    # 倒序遍历(优先展示最深子目录)
    res = os.walk(path, topdown=False)
    for i in res:
        print(i)
    r"""
    ('C:\\Users\\MSR\\Desktop\\test\\1\\111', [], ['11.txt'])
    ('C:\\Users\\MSR\\Desktop\\test\\1', ['111'], ['1.txt'])
    ('C:\\Users\\MSR\\Desktop\\test\\2', [], ['2.txt'])
    ('C:\\Users\\MSR\\Desktop\\test', ['1', '2'], ['root.txt'])
    """

    getcwd -- 获取当前工作路径

    import os
    
    # 获取当前的工作路径
    dir_path = os.getcwd()
    print(dir_path)  # E:\0-project\python\test
    
    # 获取当前文件的路径
    file_path = __file__  # 使用内置属性__file__获取
    print(file_path)  # E:/0-project/python/test/test3.py

    注意:getcwd()获取的使用当前工作路径,__file__是获取当前文件的路径。

    对于这个注意事项,大家一定要铭记于心,因为我被人欺骗了,当然这应该算是pycharm的坑吧!

    注意了,文件的所在路径和工作路径是不相同的,文件的所在路径就是在系统中的这个脚本文件实实在在的地址,如果这个文件在C:\下,那么在任何的情况下这个文件的所在路径都是C:\;而工作路径不同,如果我们在C:\下执行这个python文件,那么我们的工作路径就是C:\,如果我们是在D:\下执行,那么我们的工作路径就是D:\,这就是文件所在地址和工作地址的区别,但是在一般情况下,我们执行文件都是在文件的所在地址执行的,所以大部分的时候文件所在路径和当前工作路径都是相同的。

    可我在最开始学习这个方法的时候,我的老师教我说getcwd()的作用是获取文件的所在路径,那么是什么让我一直以为getcwd()的作用是获取文件的所在路径呢?是老师教给我的……感觉这个老师很不靠谱?那么老师怎么没有发现其中的含义呢?我怎么又一直深信不疑呢?我觉得这个一定是要pycharm来背锅了!我们在学习的时候一般都是相信自己的实际操作的结果的,我们执行的结果是什么,反复那么几次,我们的印象就会加深!

    然后今天2021年12月7日20:58:09我在给公司的项目写一个启动脚本,目的是为了避免使用繁琐的命令去启动关闭项目,那么我在写的时候为了能够在系统的任何一个地方都是可以使用这个脚本,所以将命令中的各种路径全部写为绝对路径,我们系统工程师对绝对路径是非常熟练的!但是在我写好使用的时候就发现程序根本就启动不起来,已启动就死掉了,我就开始找原因,后来我发现在程序的目录下启动就没有问题,在其它的地址启动就有问题,我就意识到这是路径的错误。当然我们是有日志的,我看日志说是配置文件相关的地方出现了错误,我一看,就很好奇,配置文件是在程序的目录中的,读取的时候使用相对路径来获取,但是却没有读到文件,但是我检查之后文件是存在的!那么这个问题就很明显了,工作路径出了问题。

    但是我还疑惑,为什么会影响到相对路径吗?然后我就测试了getcwd,发现果然如此,getcwd返回的不是文件的所在地址而是当前所在的工作地址,这个时候我还不死心,因为当时老师说的不是这样,所以我以为是linux和windows的差异,所以我就咋爱windows中又测试了一遍,发现还是一样的。那么我就又疑惑了,怎么在pycharm中,工作路径始终都是文件的所在路径呢?然后我就发现原来pycharm中可以指定文件的工作路径,而且默认将当前的文件路径作为工作路径使用。

    Python常用标准库之os模块与shutil模块的使用方法

    然后我看文档介绍:Return a unicode string representing the current working directory.,emmm估计当时老师也是被pycharm坑了吧。所以大家以后如果想要在程序中固定工作路径,可以在启动文件中使用__file__获取,或者使用os.chdir方法。

    然后最后还是在强调一下:工作路径会影响到相对路径的使用,但是不会影响到sys.pathpython的环境变量。

    chdir -- 修改当前工作路径

    之前我们有学过很多的函数,他们在涉及到路径的时候,一般默认情况都是当前脚本文件所在的目录(比如刚才的listdir、getcwd),如果将文件的默认工作路径修改,就会影响到其它的一些功能,比如说我们导入文件使用相对路径等,所以,谨慎使用。

    import os
    
    # 在修改默认工作路径前使用
    print(os.getcwd())  # E:\0-project\python\test
    
    # chdir 修改当前文件工作的默认路径
    os.chdir('C:')
    
    # 在修改工作路径后使用
    print(os.getcwd())  # C:\

    access -- 测试权限

    用于测试一个指定路径或者文件的权限,返回True或者False。

    语法:os.access(path, mode)

    必要参数为path和mode,分别表示路径和测试的权限类型。

    mode说明
    os.F_OK是否存在;
    os.R_OK是否可读;
    os.W_OK是否可写;
    os.X_OK是否可执行;

    urandom -- 随机字节对象

    返回包含适合加密使用的随机字节的bytes对象。

    import os
    
    # 参数为字节长度
    key = os.urandom(1)
    print(key, len(key))
    # b'\x92' 1
    
    key = os.urandom(5)
    print(key, len(key))
    # b'\xde\x05/lh' 5

    getpid&getppid -- 获取进程和父进程

    getpid用于返回当前程序(脚本文件)的进程ID,getppid用于返回当前程序(脚本文件)的父进程ID。

    # 获取进程唯一ID(PID)
    import os
    
    # getpid 返回当前进程的ID
    print(os.getpid())  # 10784
    
    # getppid 返回父进程的ID
    # 如果父进程已退出,Windows计算机仍将运行返回其id;其他系统将返回“init”进程的id;
    print(os.getppid())  # 16468

    cpu_count -- 获取CPU核心数(逻辑)

    import os
    
    print(os.cpu_count())
    
    """
    结果:
    8
    """

    常用属性

    enciron -- 操作环境变量

    import os
    
    #  获取系统的所有环境变量
    ev_var = os.environ
    print(ev_var)
    
    # 获取系统指定的环境变量
    path_ev_var = os.environ['PATH']
    print(path_ev_var)
    
    # 添加环境变量
    os.environ['PATH'] += r':/home/msr'  # Linux使用冒号分隔
    os.environ['PATH'] += r';C:\Users\MSR'  # Windows使用分号分隔
    
    # 其实可以看到,环境变量其实就是一个特殊的字典,修改环境变量就是在操作一个字典数据而已

    name & sep & linesep

    import os
    
    # name 获取系统标识(Linux ->posix   windows -> nt)
    print(os.name)  # nt
    
    # sep 获取路径分隔符号
    print(os.sep)  # \
    
    # linesep 获取系统的换行符号
    print(repr(os.linesep))  # '\r\n'

    文件操作

    mknod & remove -- 新建&删除文件

    windows系统不支持此方法。

    import os
    
    os.mknod('test.txt')
    os.remove('test.txt')

    mkdir & rmdir -- 创建&删除文件夹

    import os
    
    os.mkdir('test_dir')
    os.rmdir('test_dir')

    rename -- 重命名文件或文件夹

    语法:rename(old_path, new_path)

    import os
    os.rename('test.txt', 'hahaha.txt')

    makedirs & removedirs -- 迭代创建&删除文件夹

    import os
    
    # 迭代创建文件夹
    os.makedirs('a/b/c/d/e')
    # 迭代删除文件夹(文件夹中存在文件,则该文件夹不删除)
    os.removedirs('a/b/c/d/e')

    路径模块

    import os.path

    路径模块也是系统模块中的一部分。

    basename -- 返回路径中的文件名部分

    import os.path
    
    # 该路径不一定真实存在
    file_path = r'..\学习笔记\day1笔记.py'
    file_name = os.path.basename(file_path)
    print(file_name)  # day1笔记.py

    dirname -- 返回路径中目录部分

    import os.path
    
    file_path = r'..\学习笔记\day1笔记.py'
    dir_path = os.path.dirname(file_path)
    print(dir_path)  # ..\学习笔记

    split -- 将目录和文件名拆分成两部分

    import os.path
    
    file_path = r'..\学习笔记\day1笔记.py'
    tuple_var = os.path.split(file_path)
    print(tuple_var)  # ('..\\学习笔记', 'day1笔记.py')
    print(type(tuple_var))  # 返回元组: 

    join -- 将多个路径组合在一起

    import os.path
    
    path2 = 'abc'
    path3 = '123'
    path4 = 'main.py'
    
    # 使用join组合
    path = os.path.join(path2, path3, path4)
    print(path)  # abc\123\main.py
    
    # 也可以使用 os.sep
    path = path2 + os.sep + path3 + os.sep + path4
    print(path)  # abc\123\main.py

    splitext -- 将文件名分为文件名和后缀名

    import os.path
    
    # 分开文件名
    file_name = 'main.py'
    res = os.path.splitext(file_name)
    print(res)  # ('main', '.py')
    print(type(res))  # 
    
    # 分来完整路径
    file_path = r'..\学习笔记\day1笔记.py'
    res = os.path.splitext(file_path)
    print(res)  # ('..\\学习笔记\\day1笔记', '.py')
    print(type(res))  # 
    
    # 也可以使用字符串内置方法 split 实现
    res = file_path.split('.')
    print(res)  # ['', '', '\\学习笔记\\day1笔记', 'py']
    print(type(res))  # 

    getsize -- 获取指定文件的大小

    import os.path
    
    # 获取指定文件的大小(单位:byte)
    file_size_byte = os.path.getsize('test.txt')

    getctime -- 获取文件的创建时间

    获取文件的创建时间,返回时间戳。(windows有明确的创建时间,linux只有最后一次的修改时间。)

    import os.path
    import time
    
    # 获取文件创建时间
    stamp_time = os.path.getctime('./test.py')
    print(stamp_time)  # 1613989768.3445127
    
    # 配合 时间模块使用 获取时间
    print(time.ctime(stamp_time))  # Mon Feb 22 18:29:28 2021

    getmtime -- 获取文件的最后一次修改时间

    import os.path
    import time
    
    # 获取文件最后一次修改时间
    stamp_time = os.path.getmtime('./test.py')
    print(stamp_time)  # 1614037683.1067748
    
    # 配合 时间模块使用 获取时间
    print(time.ctime(stamp_time))  # Tue Feb 23 07:48:03 2021

    getatime -- 获取文件最后一次访问时间

    import os.path
    import time
    
    # 获取文件最后一次访问时间
    stamp_time = os.path.getatime('./test.py')
    print(stamp_time)  # 1635590737.799415
    
    # 配合 时间模块使用 获取时间
    print(time.ctime(stamp_time))  # Sat Oct 30 18:45:37 2021

    isdir & isfile & islink -- 检查路径类型

    不检查路径是否真实存在。

    import os.path
    
    # 检查路径类型,返回布尔值:
        # 不是对应类型或没有相应文件 : False
        # 是对应类型:True
    
    # isdir 检查路径是否是文件夹
    res = os.path.isdir('test.txt')
    
    # isfile 检查路径是否是文件
    res = os.path.isfile('test.txt')
    
    # islink 检查路径是否是链接
    res = os.path.islink('test.txt')

    isabs -- 检查路径是否是绝对路径

    不检查路径是否真实存在

    import os.path
    
    # 检查windows路径
    path = r'E:\小黄片'
    res = os.path.isabs(path)
    print(res)  # True
    
    # windows系统检查Linux路径
    path = r'/root/home'
    res = os.path.isabs(path)
    print(res)  # True

    abspath -- 相对路径转成绝对路径

    先检查一个路径是否是相对路径,是则将其转成绝对路径,反之不变。

    转成绝对路径的规则是:以当前的工作路径为基准,根据相对路径中的相对级别,将对应级别的工作路径替换为原路径中的相对路径。

    不检查路径是否真实存在。

    import os.path
    
    # 绝对路径不改变
    path = r'E:\学习资料'
    new_path = os.path.abspath(path)
    print(new_path)  # E:\学习资料
    
    # 相对路径转成绝对路径
    path = r'..\学习资料'
    new_path = os.path.abspath(path)
    print(new_path)  # E:\0-project\python\学习资料
    
    # 根据级别自动转换
    path = r'..\..\学习资料'
    new_path = os.path.abspath(path)
    print(new_path)  # E:\0-project\学习资料
    
    # 如果相对的级别过多,就以根目录为准(不会报错)
    path = r'..\..\..\..\..\..\..\..\..\..\学习资料'
    new_path = os.path.abspath(path)
    print(new_path)  # E:\学习资料

    exists -- 检查路径是否真实存在

    检查路径是否真实存在,返回布尔值。

    import os.path
    
    # 检查指定路径是否存在
    path = r'E:\小黄片'
    res = os.path.exists(path)
    print(res)  # False

    文件复制移动模块(文件操作)

    import shutil

    用于对文件进行操作。

    获取文件信息,获取文件信息,见系统模块。

    copyfileobj -- 复制文件(内容)

    只复制文件的内容,通过文件IO操作,将一个文件的对象复制到另一个文件对象当中,因为需要在文件IO对象中操作,所以不推荐使用。

    语法:copyfileobj(fsrc, fdst, length=16*1024)

    copyfileobj(被复制文件对象,新文件对象,一次性读取字符数量。)

    import shutil
    
    with open('test.txt', 'r', encoding='UTF-8') as fp1 :
       with open('test2.txt', 'w', encoding='UTF-8') as fp2 :
          shutil.copyfileobj(fp1, fp2)

    copyfile -- 复制文件(内容)

    底层调用copyfileobj,使用方便快捷,所以推荐使用。

    语法:copyfile(被复制文件路径, 新文件路径)

    import shutil
    shutil.copyfile('test.txt', 'test2.txt')

    copymode -- 复制文件(权限)

    仅复制文件的权限,不复制文件的内容(被赋值权限的文件必须存在),语法和copyfile相同。

    import shutil
    shutil.copymode('test.txt', 'test.txt')

    copystat -- 复制文件(除了内容)

    复制文件的所有的状态信息,包括各种日期、权限……就是没有内容。

    import shutil
    shutil.copystat('test.txt', 'test.txt')

    copy & copy2 -- 复制文件

    import shutil
    
    # 复制文件内容和权限
    shutil.copy('test.txt', 'test.txt')
    # 完整复制整个文件(包括状态、权限、内容……)
    shutil.copy2('test.txt', 'test.txt')

    copytree -- 迭代复制文件夹中的所有

    import shutil
    shutil.copytree('../学习笔记', '../学习笔记备份')

    rmtree -- 迭代删除文件夹(即使文件夹中有文件)

    import shutil
    shutil.rmtree('..\小黄片')

    move -- 移动文件或文件夹

    import shutil
    shutil.move('D:\学习资料', 'C:\我的心血')
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。