python3 实现linux中的`ls

虽然打印出来的不太好看,不过基本的已经实现了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- coding: utf-8 -*-
import os
from stat import * # 可以获得文件的详细信息
import pwd # 可以获得用户的各类信息
from datetime import datetime
Owner = {600:"-rw-------",
644:"-rw-r--r--",
700:"-rwx------",
755:"-rwxr-xr-x",
711:"-rwx--x--x",
666:"-rw-rw-rw-",
777:"-rwxrwxrwx"}
for i in os.listdir("."):
file_chmod = oct(os.stat(i)[ST_MODE])[-3:]
file_chmod_int = int(file_chmod)
if file_chmod_int in Owner:
print(Owner[file_chmod_int],pwd.getpwuid(os.stat(i).st_uid).pw_name,pwd.getpwuid(os.stat(i).st_uid).pw_name,os.path.getsize(i),datetime.fromtimestamp(os.stat(i).st_mtime).strftime("%m月 %d %H:%M"),i)

下面是运行的结果:

Linux_ls.png

注意: pwd模块只能在Linux中使用,windows是不行的

stat文档
pwd文档