Разделение вывода PS с помощью Python

Несколько лет назад я советовал студенту, который делал модели нашей солнечной системы и систем экзопланет в 2D и 3D. См. http://resources.modelling4all.org/libraries/orbits/documentation

. Обратите внимание, что модели находятся в Behavior Composer, и код NetLogo можно получить, нажав на вкладку «Загрузка» .

11
задан Chad Birch 3 April 2009 в 21:52
поделиться

4 ответа

Используйте второй параметр для split который указывает максимальное количество полей для разделения строки на. Я предполагаю, что можно найти число путем подсчета количества полей в первой строке, т.е. заголовков столбцов.

ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.split('\n')
# this specifies the number of splits, so the splitted lines
# will have (nfields+1) elements
nfields = len(processes[0].split()) - 1
for row in processes[1:]:
    print row.split(None, nfields)
23
ответ дан 3 December 2019 в 01:16
поделиться

Почему Вы не используете PSI вместо этого? PSI предоставляет информацию о процессе о Linux и других вариантах Unix.

import psi.process
for p in psi.process.ProcessTable().values(): …
4
ответ дан 3 December 2019 в 01:16
поделиться

maxsplit дополнительный аргумент к split метод мог бы помочь Вам:

sep.split.(row, maxsplit=42)
1
ответ дан 3 December 2019 в 01:16
поделиться

Ознакомьтесь с пакетом python.psutils .

psutil.process_iter возвращает генератор, который можно использовать для перебора всех процессов. p.cmdline - это список аргументов cmdline каждого объекта Process, разделенных так, как вы хотите.

Вы можете создать словарь pid vs (pid, cmdline, path) с помощью всего одной строки, а затем использовать его как хотите.

pid_dict = dict([(p.pid, dict([('pid',p.pid), ('cmdline',p.cmdline), ('path',p.path)]))
                 for p in psutil.process_iter()]))
14
ответ дан 3 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: