zoukankan      html  css  js  c++  java
  • glob.glob()、os.path.split()函数、global和nonlocal关键字

    1. glob.glob()

    glob模块是Python最简单的模块之一, 内容非常少, 用它可以查找符合特定规则的文件路径名, 查找文件时只会用到三个匹配符:

    • * :匹配0个或多个字符
    • ? : 匹配单个字符
    • [] : 匹配指定范围内的字符, 如[0-9]匹配数字

    返回的是列表 list类型,是所有路径下的符合条件的文件名的列表;

    例子:要对某个文件进行处理,需要使用改函数,得到文件名;参数为相对路径(也可以为绝对路径),指当前目录下的train文件夹下的所有图片

    还有我发现glob.glob()不能通过带有变量的路径来返回指定的文件,结果会返回空数组!!!

    必须在参数里写上指定的路径,可以是相对路径也可以是绝对路径。

    import os
    os.path.abspath('')
    

      

     

    当前的路径

    import glob
    imgs = glob.glob('./celebrity_data/train/*11.jpg')
    np.random.shuffle(imgs)
    imgs
    

      


    glob.iglob() 

    获取一个可遍历的对象, 使用它可以逐个获取匹配的文件路径名. 与glob.glob()的区别是: glob.glob()会同时获取到所有的匹配路径, 而glob.iglob()一次只获取一个匹配路径.

    f = glob.iglob("../*.py")
    print(f) # <generator object iglob at 0x00B9FF80>
    for py in f:
        print(py)

    2.os.path.split()  

    语法:os.path.split('PATH')
    参数说明:

    PATH指一个文件的全路径作为参数:
    如果给出的是一个目录和文件名,则输出路径和文件名
    如果给出的是一个目录名,则输出路径和为空文件名
    实际上,该函数的分割并不智能,它仅仅是以 "PATH" 中最后一个 '/' 作为分隔符,分隔后,将索引为0的视为目录(路径),将索引为1的视为文件名


    3. global和nonlocal关键字

    global适用于函数内部修改全局变量的值

    nonlocal适用于嵌套函数中内部函数修改外部变量的值

    如果没有使用以上关键字,对全局变量或者外部变量进行修改,python会默认将全局变量隐藏起来

    global nonlocal
    def outside():
      var = 5
      def inside():
        var = 3
        print(var)
    
      inside()
    outside()
    def outside():
      var = 5
      def inside():
        print(var)  
        var = 3
      inside()
    outside()
    正常运行:
    结果为3
    报错
    inside函数改变了var所以python将var隐藏了起来,这里的print找不到var因而报错。

     

  • 相关阅读:
    清除 Windows 系统垃圾的 bat
    java通过System.getProperty获取系统属性
    【转】Angular之constructor和ngOnInit差异及适用场景
    p中不能包含div
    How to make PostgreSQL functions atomic?
    How to chain a command after sudo su?
    javascript柯里化
    如何在Angular优雅编写HTTP请求
    angular default project (angular.json的解读)
    error:crosses initialization of ...的解决办法
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/10120098.html
Copyright © 2011-2022 走看看