zoukankan      html  css  js  c++  java
  • python中os.listdir( )函数读取文件夹

    编写pytohn脚本时通常需要批处理。

    列出指定目录下的所有文件/文件夹

     os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表,但有个很明显的缺点,它的默认顺序不是有序的或者说不是通常的顺序(不知道用啥排的)。

    由于返回值是list类型,所以可以使用sort()

    import os
    
    path = "./Pictures/images/"
    files = os.listdir(path)
    for filename in files:
        print(filename)

    结果(可见此时并非有序):

    现进行排序,sort是根据字典序排,为了更加准确,应将字符串转换为数字排序。

    import os
    
    path = "./Pictures/images/"
    files = os.listdir(path)
    
    #files.sort()
    files.sort(key = lambda x:int(x[:-4]))
    
    for filename in files:
        print(filename)

    处理文件名

    1、去除前导零

    import os
    
    path = "./Pictures/images/"
    files = os.listdir(path)
    
    #files.sort()
    files.sort(key = lambda x:int(x[:-4]))
    
    for filename in files:
        filename = str(int(filename[:-4])) + ".jpg" 
        print(filename)

    2、列出包含指定字符串的文件

    import os
    
    path = "./Pictures/images/"
    files = os.listdir(path)
    
    files.sort(key = lambda x:int(x[:-4]))
    
    for filename in files:
        if "1" in filename: 
            print(filename)

     3、列出以指定字符串开头或结尾的文件

    import os
    
    path = "./Pictures/images/"
    files = os.listdir(path)
    
    files.sort(key = lambda x:int(x[:-4]))
    
    print("start with "001"")
    for filename in files:
        if filename.startswith("001"):
            print(filename)
    
    print("end with "2.jpg"")
    for filename in files:
        if filename.endswith("2.jpg"):
            print(filename)

     完整的程序:

    将images中的文件经均值模糊后保存到images_blur,对应的文件名不变。

    import os
    import cv2 
    import numpy as np
     
    def solve():
        input_dir = "./Pictures/images/"           # 保存截取的图像目录
        output_dir = "./Pictures/images_blur"   # 读取图片目录表
        image_list=os.listdir(input_dir)           #获得文件名
        image_list.sort()
        index = 1
        for file in image_list:
                print('正在处理图像: %s' % index)
                img_path = input_dir + file
                print(img_path)
                img = cv2.imread(img_path)
    
                img = cv2.blur(img, (3,3))
    
                cv2.imwrite(output_dir + '/' + file,img)
                print(output_dir + '/' + file)
               
                index += 1
    
     
    if __name__ == '__main__':
        solve()

    参考链接:

    1、Python中os.listdir的排序问题  https://www.cnblogs.com/jins-note/p/9550388.html

    2、python版的文件批量读写和保存等 https://blog.csdn.net/sinat_36458870/article/details/78825571

  • 相关阅读:
    三大高级排序
    三大初级排序算法
    MVC的JsonResult用法
    使用dynamic类型改进反射
    正则指引-括号(3)反向引用
    正则指引-括号(2)引用分组
    正则指引-括号(1)
    正则指引-量词demo
    正则指引-字符组demo
    ASP.NET MVC 分部视图
  • 原文地址:https://www.cnblogs.com/lfri/p/10615472.html
Copyright © 2011-2022 走看看