'os模块: os.walk() & os.path.sep'

最近在使用python处理图片,有用到linux 和 windows两种系统,这两个系统在文件路径的表达上有点不太一样。

os.walk()

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。用来遍历文件目录是非常有效率的。

import os

def walk(top, topdown=True, onerror=None, followlinks=False):
    ......
    """
       top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
       topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
       onerror -- 可选,当walk发生错误的时执行。
       followlinks -- 可选,可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link)。
    """

for parent, dirnames, filenames in os.walk('your_path'):
    for filename in filenames:
        if filename.endswith('png'):
            file = os.path.join(parent,filename)
            img = Image.open(file)    # 打开your_path下的所有的png文件
            ......

os.path.sep

使用windows命令行(cmd), 执行cd 命令,可以看到windows的 路径是以 \ 来表示的;而在linux 系统上执行pwd 命令可以看到,linux是以 / 来表示的。

所以有时候,一段操作文件的代码想要同时在两个系统上运行,就需要用到os.path 里的方法。

import os

current_path = os.path.dirname(os.path.abspath(__file__))

train_path = r"{}datasets{}train".format(current_path + os.path.sep, os.path.sep)

"""
os.path.dirname 获取当前文件的父级目录。
os.path.abspath  获取当前文件的绝对路径。
os.path.sep 获取系统的路径分隔符。
"""

右下角对话与我联系。


评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×