在Linux下命令ls和dir都有相同的功能:打印当前文件夹目录。
注:ls是Linux的原装命令,dir是原来dos的命令,Linux选择兼容了此个dos命令,所以dir和ls在功能上是一样的。
1。ls命令
常见的ls命令有:
ls #显示不隐藏的文件与文件夹ls - l
#显示不隐藏的文件与文件夹的详细信息
ls——#显示当前目录下的所有文件(包含。开头的隐藏文件)
注意:总为当前目录下所有文件占用的内存块(block)的大小,即下图第一列数值之和。
2。Python实现dir - l命令
对于利用os模块编写一个能实现dir - l输出的程序,首先得了解一下各个字段的含义,请参考:
https://baike.baidu.com/item/ls%20-l/5261110?fr=阿拉丁
显然难点在于怎样获取文件权限,文件大小,文件创建时间。
import操作系统
进口时间进口统计
导入数学从pwd进口getpwuid
从grp进口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})
类信息:
def __init__(自我、名称、size_width=0):
自我。宽度=size_width
statinfo=os.stat(名字)
=statinfo模式。st_mode
self.name=名称
fmt=? b H % d %: % M”
自我。日期=时间。strftime (fmt, time.localtime (statinfo.st_mtime))
自我。=statinfo大小。st_size
allocated_size=statinfo。st_blocks * statinfo。st_blksize
f_bsize=os.statvfs(名字)。f_bsize
f_block_num=数学。装天花板(allocated_size/f_bsize)
自我。fsize=f_block_num * f_bsize//1024
自我。用户=getpwuid (statinfo.st_uid)。pw_name
自我。组=getgrgid (statinfo.st_gid)。gr_name
自我。nlink=statinfo。st_nlink
自我。烫=' d '如果stat.S_ISDIR(模式)”——“烫的
FILE_PERMS:
自我。烫+=' r '如果模式,其他烫[' r ']”——“
自我。烫+=' w '如果模式,烫其他[' w '] ', '
自我。烫+=' x '如果模式,其他烫[' x ']”——“
#魔术方法:覆盖方法在对象
def __str__(自我):
返回“{}{}{}{}{:{宽度}}{}{}”。格式(
自我。烫,自我。nlink,自我。用户自我。集团
自我。大小、自我。日期、self.name宽度=self.width)
if __name__==癬_main__”:总=0
dir_list=[]
宽度=0
x os.listdir (' . '):
如果x [0]==薄!?
继续项=Info (x)
宽度=max(宽度,len (str (item.size)))
+=总项目。fsize
dir_list.append (x)
打印(“总”,总)
x的排序(dir_list、关键=λz: z.upper ()):
打印(信息(x,宽度))