91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用os模塊編寫一個能實現dir -l輸出的程序

發布時間:2020-08-05 09:45:39 來源:網絡 閱讀:197 作者:ckllf 欄目:系統運維

  在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輸出的程序,首先得了解一下各個字段的含義,請參考:

  https://baike.baidu.com/item/ls%20-l/5261110?fr=aladdin

  顯然難點在于怎樣獲取文件權限、文件大小、文件創建時間。

  import os

  import time

  import stat

  import math

  from pwd import getpwuid

  from grp import getgrgid

  FILE_PERMS = [

  {'r': stat.S_IRUSR, 'w': stat.S_IWUSR, 'x': stat.S_IXUSR},

  {'r': stat.S_IRGRP, 'w': stat.S_IWGRP, 'x': stat.S_IXGRP},

  {'r': stat.S_IROTH, 'w': stat.S_IWOTH, 'x': stat.S_IXOTH}

  ]

  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):無錫人流醫院 http://www.0510bhyy.com/

  return "{} {} {} {} {:{width}} {} {}".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

  dir_list.append(x)

  print('total', total)

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

  print(Info(x, width))


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴林右旗| 通州区| 西和县| 黄石市| 邛崃市| 瑞金市| 井冈山市| 肇源县| 嫩江县| 平陆县| 会理县| 肥东县| 抚顺县| 通城县| 锡林郭勒盟| 麻栗坡县| 宾阳县| 社会| 林口县| 山东省| 成武县| 贞丰县| 焉耆| 溆浦县| 滨州市| 罗江县| 南丹县| 祁阳县| 宣汉县| 砚山县| 龙州县| 上栗县| 海安县| 柳河县| 海兴县| 澳门| 兴仁县| 清丰县| 鄂伦春自治旗| 秦皇岛市| 石首市|