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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM