#python #string #powershell #text-files
Вопрос:
Я получаю некоторые данные с помощью команды PowerShell из python, не имея cmd в Windows с помощью этой команды!
import os
windows_info = os.system('powershell.exe get-physicaldisk')
и он успешно работает. но этот вывод дает результат ‘int’! Я попытался преобразовать это в строку, используя,
windows_infoEG = str(windows_info)
но когда я попытался распечатать это, оно ничего не напечатает (но когда я проверяю его тип, он говорит «str»). как я могу превратить это в строку, чтобы записать вывод в текстовый файл!
это весь мой код.
import os
windows_info = os.system('powershell.exe get-physicaldisk')
print(type(windows_info))
windows_infoEG = str(windows_info)
print(type(windows_infoEG))
print(windows_infoEG)
f = open("hardDriveInfo.txt", "w")
f.write("Hard Drive Info" windows_infoEG)
f.close()
Спасибо!
Ответ №1:
os.system
возвращает вам «код выхода» процесса (обычно 0 для успеха, ненулевой для сбоя). Вот почему вы получаете целое число. Он НЕ возвращает вам стандартный вывод команды. Для этого вам нужен subprocess
модуль.
windows_info = subprocess.check_output(['powershell.exe','get-physicaldisk']).decode('utf-8')
Комментарии:
1. Я хотел бы добавить ссылку на документацию
os.system
: »subprocess
Модуль предоставляет более мощные средства для создания новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этой функции».2. Ну, это сложнее, чем это.
os.system
служит полезной цели. Одна из проблем заключается в том, что слово «результаты» неоднозначно.os.system
Возвращает «результат» процесса, но если вы хотите подключить stdin и stdout, это не тот инструмент.