Python-os

发布于 2025-01-06 09:12:53 字数 3123 浏览 8 评论 0

os.sep

获取操作系统的路径分隔符: linux/unix 为 / ,windows 为 \\

os.getcwd

获得当前工作路径,相当于 shell 的 pwd

os.listdir

获取指定路径的文件/文件夹列表,相当于 shell 的 ls ,比较常与 os.getcwd() 混用获取当前路径的文件或文件夹 os.listdir(os.getcwd())

os.walk

遍历指定的文件夹, os.walk 的运行逻辑是 os.listdir 指定文件夹,然后返回该文件夹 * 文件夹路径,文件夹下的所有文件夹,文件夹下的所有文件 * ,如果下存在非空子文件夹,则会继续遍历子文件夹,直到返回的子文件夹为空就停止。

for root, dirs, files in os.walk(PATH):
    # 可以在这里进行一些必要的操作
    # 如过滤文件夹 dirs[:] = [d for d in dirs if d not in exclude]
    # 文件夹排序 dirs.sort()
    print(root, dirs, files)
    print("---> start next walk.")

注意 os.walk 返回的不是有序的文件/文件夹

  • 如果想要返回简单的有序的文件夹/文件,需要对 walk 结果进行处理

     

    for root, dirs, files in os.walk(PATH):
        dirs.sort()
        files.sort()
        print(root, dirs, files)
    
  • 如果想要比较复杂的排序方式,如本 wiki 中的 _Sidebar.md 文件自动生成,可以使用 os.listdir 进行自定义

     

    # 例子是这个 wiki 项目的_Sidebar.md 自动生成脚本 要求文件夹/文件排序,先输出文件夹,再输出文件,对文件夹进行深度优先搜索.
    sorted_dir = []
    sorted_file = []
    dir_content = os.listdir(PATH)
    for df in sorted(dir_content):
        full_path = os.path.join(PATH, df)
        # now are sorted but mix with dirs and files
        if os.path.isdir(full_path):
            sorted_dir.append(full_path)
            # if you want to go deep in dir you could do in this
        else:
            sorted_file.append(sorted_file)
    

os.path

os.path.dirname

获取路径的文件夹路径 os.path.dirname(os.path.realpath(__file__)) 当前文件的文件夹路径

os.path.basename

获取路径的文件夹名称 os.path.basename(os.getcwd()) 获得当前文件路径的文件夹名称.如果是文件路径,则会返回文件名,所以最好使用的时候加判断当前路径是文件夹还是文件

os.path.join

将参数通过 os.sep 链接起来,合成路径

os.chdir

切换当前工作路径,如果有时候你只需要临时切换路径然后回来的,可以使用上下文管理器切换去目标路径然后回来

from contextlib import contextmanager
import os

@contextmanager
def cd(newdir):
    prevdir = os.getcwd()
    os.chdir(os.path.expanduser(newdir))
    try:
        yield
    finally:
        os.chdir(prevdir)

# 然后就可以这样进行调用了
os.chdir('/home')
with cd('/tmp'):
    # something you do in '/tmp' dir
# Directory is now back to '/home'.

os.unlink

删除文件,如果文件是一个目录则返回一个错误,如果是文件夹应该使用 shutil

FAQ

获取父目录名

这里

# python2
# 目录结构的父目录
import os
print os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 运行环境的父目录
print(os.path.dirname(os.getcwd()))

# python3
# 上面的方法适用 外加
print(pathlib.Path().absolute().parent)
print(pathlib.Path(__file__).parent.parent)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

灼痛

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文