使用Python獲取按大小排序的目錄檔案列表。
目錄包含計算機路徑中儲存有關其他巢狀路徑資訊的特殊節點,但並不包含任何資訊。由於它們包含檔案和其他目錄,因此它們具有一定的尺寸。按大小排序意味著根據目錄在磁碟中佔用的空間對目錄進行排序。在本文中,我們將探討幾種方法,例如使用os模組、glob模組等、sorted、lambda函式等來執行相同的操作。
使用OS和Operator模組
Python的os模組提供了一種與作業系統互動的方式。它提供了各種與作業系統相關的任務的函式,包括檔案和目錄操作、程序管理、環境變數等。另一方面,operator模組為我們提供了內建的Python運算子,例如map、filter、sorted等。該模組為我們提供了有助於編寫更簡潔、更清晰程式碼的方法。
示例
我們首先在下面的程式碼中匯入了Python中的os和operator模組。接下來,我們定義了檔案所在的目錄。我們還以列表的形式定義了所有檔名。我們定義了一個名為files的空列表。接下來,我們遍歷包含檔名的列表,在每次迭代中,我們首先檢查元素是否為檔案。如果元素是檔案,我們使用getsize()方法訪問大小。我們將檔名和大小附加到初始化的列表中,並使用sort方法對其進行排序。
import os import operator directory = 'files' file_list = ['file1.txt', 'file2.txt', 'file3.txt'] files = [] for file_name in file_list: file_path = os.path.join(directory, file_name) if os.path.isfile(file_path): file_size = os.path.getsize(file_path) files.append((file_name, file_size)) files.sort(key=operator.itemgetter(1)) for file in files: print(f"File: {file[0]}, Size: {file[1]} bytes")
輸出
File: file1.txt, Size: 12 bytes File: file2.txt, Size: 26 bytes File: file3.txt, Size: 56 bytes
使用os和Lambda函式
lambda函式是一個沒有任何名稱的函式,用於小型任務。它與任何典型函式的作用相同。但由於它沒有名稱,因此我們不能在程式碼的其他部分使用它。當我們需要快速將某些東西應用於可迭代物件時,這很有用,但我們確定不需要在其他地方使用該函式。
示例
下面的示例與上一個示例具有相似的程式碼。唯一的區別是,我們使用lambda函式而不是operator模組對列表中的檔案進行排序。我們使用Python的sorted方法進行排序,並使用lambda函式將函式應用於所有列表元素。
import os directory = 'files' file_list = ['file1.txt', 'file2.txt', 'file3.txt'] files = [] for file_name in file_list: file_path = os.path.join(directory, file_name) if os.path.isfile(file_path): file_size = os.path.getsize(file_path) files.append((file_name, file_size)) sorted_files = sorted(files, key=lambda x: x[1]) for file in sorted_files: print(f"File: {file[0]}, Size: {file[1]} bytes")
輸出
File: file1.txt, Size: 12 bytes File: file2.txt, Size: 26 bytes File: file3.txt, Size: 56 bytes
使用Glob和OS
Python中的glob模組提供了一種使用萬用字元模式搜尋檔案方便的方法。它允許您根據特定模式或模式使用萬用字元匹配檔案或目錄名。因此,我們可以使用該函式檢索與模式匹配的檔案和路徑列表。方法包括萬用字元模式,例如"*"、"?"等。
示例
我們首先在下面的程式碼中使用import語句匯入了glob和os模組。接下來,我們定義了檔案所在的目錄。我們以列表的形式獲取所有檔名。我們檢查了所有列表元素是否為檔案。接下來,我們使用Python的sorted方法根據大小對檔案進行排序。我們使用迭代技術遍歷列表以列印檔案的名稱和大小。
import glob import os directory = 'files' files = [(os.path.basename(file), os.path.getsize(os.path.join(directory, file))) for file in ['file1.txt', 'file2.txt', 'file3.txt'] if os.path.isfile(os.path.join(directory, file))] sorted_files = sorted(files, key=lambda x: x[1]) for file in sorted_files: print(f"File: {file[0]}, Size: {file[1]} bytes")
輸出
File: file1.txt, Size: 12 bytes File: file2.txt, Size: 26 bytes File: file3.txt, Size: 56 bytes
結論
在本文中,我們瞭解瞭如何使用Python獲取按大小排序的目錄檔案列表。Python提供了多個庫來處理目錄和檔案。我們可以使用glob、os等來處理目錄和檔案。為了對目錄進行排序,我們可以使用Python中的其他程式設計技術,例如lambda函式、operator模組等。