You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已从Linux服务器获取用户名列表,如何用Python实现后续处理?

我来帮你梳理下怎么处理从Linux服务器获取的用户名列表,基于你提供的代码,这里有几个实用的技术方案,涵盖代码优化、常见处理功能这些场景:

一、优化基础获取代码

首先先把你原有的代码优化得更健壮,适配Python3环境(原代码是Python2语法),同时直接得到结构化的用户名列表,方便后续处理:

#!/usr/bin/env python3
import subprocess

def get_user_list():
    try:
        # 使用check_output替代Popen,更简洁且自动处理命令执行异常
        output = subprocess.check_output(['ls', '/home/ADILSTU'], universal_newlines=True)
        # 按行分割并过滤空行,得到干净的用户名列表
        user_list = [user.strip() for user in output.splitlines() if user.strip()]
        return user_list
    except subprocess.CalledProcessError as e:
        print(f"获取用户列表失败: {e}")
        return []
    except FileNotFoundError:
        print("目标目录/home/ADILSTU不存在")
        return []

# 获取并存储用户名列表
information = get_user_list()
二、常见功能处理方案

基于上面得到的information用户名列表,以下是几个高频场景的处理方法:

1. 筛选特定规则的用户名

比如筛选符合特定格式的用户(以指定字符开头、包含数字、长度达标等):

# 筛选以"j"开头的用户(不区分大小写)
j_start_users = [user for user in information if user.lower().startswith('j')]
# 筛选包含数字的用户
users_with_digits = [user for user in information if any(char.isdigit() for char in user)]
# 筛选长度大于5的用户名
long_username_users = [user for user in information if len(user) > 5]

2. 统计与分析用户数据

可以快速统计用户总数、用户名特征分布:

from collections import Counter

# 统计总用户数
total_users = len(information)
print(f"总用户数:{total_users}")

# 统计用户名长度的分布情况
length_distribution = Counter(len(user) for user in information)
print("用户名长度分布:", length_distribution)

# 统计用户名首字母的分布(不区分大小写)
first_letter_distribution = Counter(user[0].lower() for user in information)
print("首字母分布:", first_letter_distribution)

3. 保存处理结果到文件

把用户名列表保存到文本或CSV文件,方便后续离线查看或用Excel等工具分析:

# 保存为每行一个用户名的文本文件
with open('user_list.txt', 'w') as f:
    f.write('\n'.join(information))

# 保存为CSV文件(带表头,适合表格工具处理)
import csv
with open('user_list.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['Username'])  # 写入表头
    for user in information:
        writer.writerow([user])

4. 批量执行针对用户的操作

比如批量查询每个用户主目录的大小(需要服务器权限):

def get_home_size(username):
    try:
        # 用du命令获取目录总大小,-s汇总,-h输出人类可读格式
        size_info = subprocess.check_output(['du', '-sh', f'/home/ADILSTU/{username}'], universal_newlines=True)
        return size_info.split()[0]
    except subprocess.CalledProcessError:
        return "权限不足或目录不存在"

# 批量生成用户-目录大小的字典
user_size_map = {user: get_home_size(user) for user in information}
for user, size in user_size_map.items():
    print(f"用户 {user} 的主目录大小:{size}")

内容的提问来源于stack exchange,提问作者rippleEffect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:59:53