利用os模組編寫乙個能實現dir l輸出的程式

2021-09-27 05:33:01 字數 2110 閱讀 5172

在linux下命令ls和dir都有相同的功能:列印當前資料夾目錄。

注:ls 是linux的原裝命令,dir 是原來dos的命令,linux選擇相容了此個dos命令,所以dir和ls在功能上是一樣的。

1. ls命令

常見的ls命令有:

ls # 顯示不隱藏的檔案與資料夾

ls -l # 顯示不隱藏的檔案與資料夾的詳細資訊

ls -a # 顯示當前目錄下的所有檔案(包含.開頭的隱藏檔案)

注意:total為當前目錄下所有檔案占用的記憶體塊(block)的大小,即下圖第一列數值之和。

2. python實現dir -l 命令

對於利用os模組編寫乙個能實現dir -l輸出的程式,首先得了解一下各個欄位的含義,請參考:

顯然難點在於怎樣獲取檔案許可權、檔案大小、檔案建立時間。

import os

import time

import stat

import math

from pwd import getpwuid

from grp import getgrgid

file_perms = [,,

class info:

def __init__(self, name, size_width=0):

self.width = size_width

statinfo = os.stat(name)

mode = statinfo.st_mode

self.name = name

fmt = "%b %d %h:%m"

self.date = time.strftime(fmt, time.localtime(statinfo.st_mtime))

self.size = statinfo.st_size

allocated_size = statinfo.st_blocks * statinfo.st_blksize

f_bsize = os.statvfs(name).f_bsize

f_block_num = math.ceil(allocated_size / f_bsize)

self.fsize = f_block_num * f_bsize // 1024

self.user = getpwuid(statinfo.st_uid).pw_name

self.group = getgrgid(statinfo.st_gid).gr_name

self.nlink = statinfo.st_nlink

self.perm = 'd' if stat.s_isdir(mode) else '-'

for perm in file_perms:

self.perm += 'r' if mode & perm['r'] else '-'

self.perm += 'w' if mode & perm['w'] else '-'

self.perm += 'x' if mode & perm['x'] else '-'

# magic method: overrides method in object

def __str__(self):無錫**醫院

return "{} {} {} {} } {} {}".format(

self.perm, self.nlink, self.user, self.group,

self.size, self.date, self.name, width=self.width)

if __name__ == '__main__':

total = 0

dir_list =

width = 0

for x in os.listdir('.'):

if x[0] == '.':

continue

item = info(x)

width = max(width, len(str(item.size)))

total += item.fsize

print('total', total)

for x in sorted(dir_list, key=lambda z: z.upper()):

print(info(x, width))

利用os模組求乙個資料夾的大小。

一 遞迴方法 1 defsize path 給定乙個初始的資料夾路徑 2 num 0 3 list name os.listdir path 利用os模組方法,以列表的形式獲得該資料夾下面的所有檔案或者資料夾名稱 4for i in list name 5 file name os.path.joi...

利用React anu編寫乙個彈出層

本文將一步步介紹如何使用react或anu建立 乙個彈出層。react時代,都是要經過編譯的,我們很多時間都耗在babel與webpack上。因此本文也介紹如何玩webpack與babel。我們建立乙個ui目錄,裡面新增乙個package.json。內容如下,裡面已經是儘量減少babel外掛程式的使...

利用C 編寫乙個猜字遊戲

一 準備工作 規則就是這麼多,我們應該用c 來實現它。首先,我們應考慮怎樣記錄單詞,其中包括原單詞 猜錯的字母 當前猜出的殘缺單詞。如果用傳統的c風格陣列,這是很麻煩的,這用c風格字串實現很困難。但c 為我們預先想到了這一切,c 中帶有乙個功能強大的string類,它的宣告在標頭檔案string中。...