Как проанализировать вывод справки по команде оболочки в читаемый формат Json в PythonPython

Программы на Python
Anonymous
Как проанализировать вывод справки по команде оболочки в читаемый формат Json в Python

Сообщение Anonymous »

Работаю над проектом по автоматизации определенного процесса установки операционной системы как над своим собственным хорошим проектом. Я начал использовать фреймы данных pandas для организации определенных данных в таблицы, и с помощью третьих лиц мне удалось использовать эти фреймы данных в меню приложений для отправки данных в функции. Сейчас я пытаюсь перевернуть данные командной строки, такие как

Код: Выделить всё

cryptsetup --help
чей вывод аналогичен

Код: Выделить всё

Help options:
-?, --help                            Show this help message
--usage                           Display brief usage
-V, --version                         Print package version
--active-name=STRING              Override device autodetection of dm device to be reencrypted
--align-payload=SECTORS           Align payload at  sector boundaries - for luksFormat
--allow-discards                  Allow discards (aka TRIM) requests for device
-q, --batch-mode                      Do not ask for confirmation
--cancel-deferred                 Cancel a previously set deferred device removal
-c, --cipher=STRING                   The cipher used to encrypt the disk (see /proc/crypto)`
в читаемый формат Json, чтобы реализовать его в фрейме данных pandas, который будет использоваться в качестве меню. Другими словами, мне нужно, чтобы формат данных json мог использоваться json.loads для создания меню перечисленных параметров, содержащего сокращенный параметр, более длинный параметр и информацию о параметрах.
Преобразование вывода в Json было моей первой мыслью о решении проблемы и кажется лучшим вариантом; чтобы найти способы написания некоторых серий регулярных выражений с помощью sed и awk, которые могли бы анализировать данные командной строки --help во что-то читаемое в формате JSON. Я также пытался просто использовать pandas read_csv, например

Код: Выделить всё

def cryptsetup_help():
process = subprocess.Popen(["cryptsetup --help"], shell=True, stdout=subprocess.PIPE)
process_list = process.communicate()[0]
process_list_output = process_list.decode('utf-8')
names = ['Help', 'options', ' ']
df = pd.read_csv(io.StringIO(process_list_output), header = 2, names=['Help', 'options:', ' '], usecols = ['Help', 'options:', ' '], nrows=100)
print(df)
однако это приводит к той же невозможности парсинга. Я не могу точно сопоставить ни запятую, ни «--», поскольку они не указаны для каждой подходящей строки. Любая помощь будет оценена по достоинству. В реальной таблице можно указать только два столбца или все три любым возможным способом, а остальное я, вероятно, смогу выяснить.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -in-python

Вернуться в «Python»