仿写Linux下的ls-l命令
时间: 2024-04-30 09:24:59 浏览: 121
以下是仿写Linux下的ls-l命令的Python代码:
```python
import os
import pwd
import grp
import time
def ls_l(path='.'):
# 获取当前目录下的所有文件和目录
files = os.listdir(path)
# 遍历所有文件和目录
for file in files:
file_path = os.path.join(path, file)
stat_info = os.stat(file_path)
# 获取文件权限
mode = stat_info.st_mode
file_perm = ''
if os.path.isfile(file_path):
file_perm += '-'
elif os.path.isdir(file_path):
file_perm += 'd'
else:
file_perm += '?'
if mode & 0o400:
file_perm += 'r'
else:
file_perm += '-'
if mode & 0o200:
file_perm += 'w'
else:
file_perm += '-'
if mode & 0o100:
file_perm += 'x'
else:
file_perm += '-'
if mode & 0o040:
file_perm += 'r'
else:
file_perm += '-'
if mode & 0o020:
file_perm += 'w'
else:
file_perm += '-'
if mode & 0o010:
file_perm += 'x'
else:
file_perm += '-'
if mode & 0o004:
file_perm += 'r'
else:
file_perm += '-'
if mode & 0o002:
file_perm += 'w'
else:
file_perm += '-'
if mode & 0o001:
file_perm += 'x'
else:
file_perm += '-'
# 获取文件所有者和所属组
uid = stat_info.st_uid
gid = stat_info.st_gid
try:
owner = pwd.getpwuid(uid).pw_name
except KeyError:
owner = str(uid)
try:
group = grp.getgrgid(gid).gr_name
except KeyError:
group = str(gid)
# 获取文件大小
size = stat_info.st_size
# 获取文件最后修改时间
mtime = stat_info.st_mtime
mtime_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mtime))
# 输出文件信息
print('{} {} {} {} {} {}'.format(file_perm, owner, group, size, mtime_str, file))
```
使用示例:
```python
ls_l('.') # 显示当前目录下的文件信息
```
阅读全文