在這個例子中,主要會用到python內建的和os模組的幾個函式:
os.walk() : 該方法用來遍歷指定的檔案目錄,返回乙個三元tuple(dirpath, dirnames, filenames) ,其中dirpath為當前目錄路徑,dirnames為當前路徑下的資料夾,filenames為當前路徑下的檔案
os.path.join() :可以用來連線目錄和檔名,這樣就可以得到某個檔案的全路徑了
os.path.getsize() :獲取制定檔案的檔案size ,配合os.path.join()使用, 如果傳入的為資料夾路徑,返回0l
sorted : 迭代乙個items ,然後返回乙個新的排序好的list,不會影響原物件
有了這幾個函式後,遍歷本地檔案就非常簡單了,前三個函式不詳細說,
這邊主要講下第四個函式sorted 的用法:
講sorted前,先介紹一下iterable ,中文意思是迭代器。
1. python的幫助中對iterable的解釋是:iteralbe指的是能夠一次返回它的乙個成員的物件。
iteralbe主要包括3類:
第一類是所有的序列型別,比如list(列表)、str(字串)、tuple(元組)。
第二類是一些非序列型別,比如dict(字典)、file(檔案)。
第三類是你定義的任何包含__iter__()或__getitem__()方法的類的物件。
2. python中對sorted方法的講解:
sorted(iterable[, key][, reverse])
作用:return a new sorted list from the items in iterable.
其中 key, 和reverse為可選引數
key指定乙個接收乙個引數的比較函式,用來從買個list元素中提取乙個用於比較的關鍵字: 例如key=str.lower. 預設值是none(直接比較元素)
reverse是乙個布林值。如果設定為true,列表元素將被倒序排列。
在原來的版本中還有個cmp引數,現在已經去掉了,相容方案是 使用 functools.cmp_to_key() 把cmp函式轉換為key函式。
key 返回乙個 lambda ,所謂 lambda就是乙個匿名小函式,lambda d: d[1] 對應於**就是:
def (d):
return d[1]
對應到字典中,就是返回字典鍵值對中的值,d[0]表示鍵,對字典使用sorted會返回乙個元祖list
好了,基本的函式都講完了,下面附上例子的相應**:
# -*-coding:utf-8-*-
import os
filepath = 'd:\temp'
filemap = {}
size = 0
# 遍歷filepath下的檔案、資料夾(包括子目錄)
for parent, dirnames, filenames in os.walk(filepath):
for dirname in dirnames:
print('parent is %s, dirname is %s' % (parent, dirname))
for filename in filenames:
print('parent is %s, filename is %s' % (parent, filename))
print('the full name of the file is %s' % os.path.join(parent, filename))
size = os.path.getsize(os.path.join(parent, filename))
filemap.setdefault(os.path.join(parent, filename), size)
filelist = sorted(filemap.items(), key=lambda d: d[1], reverse=false)
for filename, size in filelist:
print("filename is %s , and size is %d" % (filename, size))
python 檔案系統
python的檔案系統 跟python的檔案相關的十分有用的模組 1 模組的概念 每乙個源 檔案 py 都是乙個模組 2 python自帶的實用模組 1 random模組的randint 函式生成隨機數,不可直接呼叫,需要import語句匯入模組,然後再使用 import random random...
python檔案系統
命令 描述os.getcwd 得到當前工作的目錄 os.listdir 指定所有目錄下所有的檔案和目錄名,以列表的形式返回 os.mkdir 建立目錄 os.rmdir 刪除指定目錄 os.remove 刪除指定檔案 os.rename 修改檔案或資料夾的名稱 os.path.isfile 判斷指定...
Python檔案與檔案系統
1.import os print 當前目錄是 os.getcwd print os.listdir 這個返回的是當前目錄的檔案和目錄的名稱都是以列表形式返回的 2.author administrator 使用fileinput模組來處理乙個或者多個檔案的內容 import fileinput d...