gpt4 book ai didi

python - 从 python 中的 df -h 输出中选择特定列

转载 作者:太空狗 更新时间:2023-10-29 20:41:00 27 4
gpt4 key购买 nike

我正在尝试创建一个简单的脚本,它将从 unix df - h 命令中选择特定的列。我可以使用 awk 来执行此操作,但我们如何在 python 中执行此操作?

这是 df -h 输出:

Filesystem                    Size  Used  Avail  Use%  Mounted on/dev/mapper/vg_base-lv_root   28G   4.8G    22G   19%  /tmpfs                        814M   176K   814M    1%  /dev/shm/dev/sda1                    485M   120M   340M   27%  /boot

我想要这样的东西:

第 1 列:

Filesystem/dev/mapper/vg_base-lv_root           tmpfs                 /dev/sda1

第 2 列:

Size28G814M 485M   

最佳答案

您可以使用 op.popen运行命令并检索其输出,然后 splitlinessplit拆分行和字段。运行 df -Ph而不是 df -h,以便在列太长时不会拆分行。

df_output_lines = [s.split() for s in os.popen("df -Ph").read().splitlines()]

结果是一个行列表。要提取第一列,可以使用[line[0] for line in df_output_lines](注意列从0开始编号)等等。您可能希望使用 df_output_lines[1:] 而不是 df_output_lines 来去除标题行。

如果您已经将 df -h 的输出存储在某个文件中,则需要先加入这些行。

fixed_df_output = re.sub('\n\s+', ' ', raw_df_output.read())
df_output_lines = [s.split() for s in fixed_df_output.splitlines()]

请注意,这假设文件系统名称和挂载点都不包含空格。如果他们这样做(这在某些 unix 变体上的某些设置是可能的),实际上不可能解析 df 的输出,甚至是 df -P。您可以使用 os.statvfs获取有关给定文件系统的信息(这是 df 在内部为每个文件系统调用的 C function 的 Python 接口(interface)),但是没有可移植的方式来枚举文件系统。

关于python - 从 python 中的 df -h 输出中选择特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com