仿写 Linux 下的 ls-l 命令
时间: 2024-05-14 18:18:47 浏览: 51
在 Linux 系统中,ls -l 命令可以以长格式列出当前目录下的文件和文件夹,并显示它们的权限、大小、创建时间等详细信息。下面是一个简单的 Python 脚本,可以在 Linux 系统中实现类似的功能:
```python
import os
import pwd
import grp
import time
# 获取当前目录
dir_path = os.getcwd()
# 获取当前目录下的文件和文件夹
files = os.listdir(dir_path)
# 遍历文件列表
for file in files:
# 获取文件的详细信息
file_stat = os.stat(os.path.join(dir_path, file))
# 获取文件的权限
mode = file_stat.st_mode
mode_str = ''
mode_str += 'd' if os.path.isdir(os.path.join(dir_path, file)) else '-'
mode_str += 'r' if mode & 0o400 else '-'
mode_str += 'w' if mode & 0o200 else '-'
mode_str += 'x' if mode & 0o100 else '-'
mode_str += 'r' if mode & 0o040 else '-'
mode_str += 'w' if mode & 0o020 else '-'
mode_str += 'x' if mode & 0o010 else '-'
mode_str += 'r' if mode & 0o004 else '-'
mode_str += 'w' if mode & 0o002 else '-'
mode_str += 'x' if mode & 0o001 else '-'
# 获取文件的链接数、所有者、所属组、大小和最后修改时间
nlink = file_stat.st_nlink
owner = pwd.getpwuid(file_stat.st_uid)[0]
group = grp.getgrgid(file_stat.st_gid)[0]
size = file_stat.st_size
mtime = time.strftime('%Y-%m-%d %H:%M', time.localtime(file_stat.st_mtime))
# 输出文件信息
print(mode_str, nlink, owner, group, size, mtime, file)
```
这个脚本首先获取当前目录下的文件和文件夹列表,然后遍历每个文件,使用 os.stat 函数获取文件的详细信息,包括权限、链接数、所有者、所属组、大小和最后修改时间。接着,根据文件的权限位计算出权限字符串,并使用 pwd 和 grp 模块获取文件所有者和所属组的名称。最后,将所有信息输出到屏幕上。