Python按照指定順序讀取資料夾中的檔案

2022-08-27 03:33:14 字數 1718 閱讀 7007

1. 首先不得不說的是python中的os.listdir()方法。 os.listdir() 方法用於返回指定的資料夾包含的檔案或資料夾的名字的列表。但是,os.listdir()返回的檔名不一定是順序的,這就要求我們對返回的檔名列表進行排序:

假設我們有乙個這樣的資料夾:

我們利用os.listdir()方法寫出如下**:

import os

path = '/users/28350/desktop/files'

path_list = os.listdir(path)

print(path_list)

輸出結果如下:可見返回的檔名列表是乙個奇怪的順序。2. 既然os.listdir(path)返回的是檔名列表,那麼列表不是可以排序嗎,我只要用 sort() 方法,給列表中的檔名排個序不就好了?看看效果:

path = '/users/28350/desktop/files'

path_list = os.listdir(path)

path_list.sort()

print(path_list)

輸出結果如下:可見,大致的順序有了。但是糟糕的是10,11,12排到了2前面,這顯然是因為sort()採取了按字元鍵值排序的手段。那麼怎樣解決這個問題呢?我們對**稍作改變:

path = '/users/28350/desktop/files'

path_list = os.listdir(path)

path_list.sort(key=lambda x:int(x[:-4]))

print(path_list)

新加入的一行做的作用是將每個檔名將句號 (.) 前的字串轉化為數字,然後以數字為key來進行排序。這樣便能夠按照我們的心意來排序了。3.使用的時候發現了新問題:這個手段要求檔名高度格式化,假如一堆中夾雜了一張其他格式的呢?比如13.jpeg,這樣的話上面的**會讀到句號,轉化不成int而報錯。這時候不妨試試下面的方法。

path = '/users/28350/desktop/files'

path_list = os.listdir(path)

path_list.sort(key=lambda x:int(x.split('.')[0]))

print(path_list)

這樣寫的話就只需考慮句號前面的數字順序了,更有普適性。總結一下:想要按順序讀取資料夾中的檔案,方法不是固定的,對於不同的檔名見招拆招才是上策。實在不行咱們還可以動用我們的大殺器:正規表示式,只需要我們有乙個善於發現檔名特徵的眼睛就難不倒我們啦。

oracle按照指定順序進行排序

之前在網上查了下按照指定順序進行排序的方法,根據charindex來處理排序,但是在oracle發現不行,因為oracle沒有charindex函式,然後使用instr代替了charindex,然後又在網上搜了另外一種方 實驗如下 1.新建表 create table br dict id numb...

mysql查詢按照指定欄位的指定順序進行排序

之前我們已經了解的mysql按照中文進行排序的實現方法了 那麼如何按照指定欄位的指定順序進行排序呢?例如有乙個使用者表user,有id,username,status欄位,status的字段值有1,2,3,4四種情況,如何將使用者表中的資料按照status欄位的2,4,1,3順序進行排序呢?這時候需...

MySql查詢結果按照指定順序排序

mysql這功能做的很好用啊!讓查詢結果按照指定順序排序 表結構如下 mysql select from test id name 1 test1 2 test2 3 test3 4 test4 5 test5 執行以下sql mysql select from test where id in 3...