Назначение данных командной строки в переменную python - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь получить информацию о журнале svn для файла в хранилище Subversion, которое впоследствии необходимо сбросить в CSV.

По-видимому, я запускаю следующую команду, используя пакет Python OS

Код:

filePath = r"C:\Project_Files\My_Project\file1.c" # My_Project is in Subversion
svn_command = "svn log " + filePath + "-v > C:\\information.txt"
os.system(svn_command)

Я получаю данные журнала svn в файле information.txt, но выполнение этого вида операции для нескольких файлов (запись в txt и чтение из txt) занимает очень много времени.

Есть ли способ автоматически назначать данные, полученные из svn log -v, в переменную python?

1 Ответ

1 голос
/ 14 мая 2019

Вы можете использовать subprocess.Popen для этого, обратите внимание, что я делю команду на список, вы можете создать этот список заранее

import subprocess

filePath = r"C:\Project_Files\My_Project\file1.c" # My_Project is in Subversion
svn_command = "svn log " + filePath + "-v > C:\\information.txt"

#Split command into individual words
cmd_list = svn_command.split()

#Run command via subprocess Popen
cmd_output = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

#Get output and error 
cmd_output, cmd_err = cmd_output.communicate()

#Get output and error string
cmd_output_str = cmd_output.decode('utf-8', errors='ignore').strip()
cmd_err_str = cmd_err.decode('utf-8', errors='ignore').strip()

Рабочий пример будет

import subprocess

cmd = 'uname -a'

#Split command into individual words
cmd_list = cmd.split()

#Run command via subprocess Popen
cmd_output = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

#Get output and error
cmd_output, cmd_err = cmd_output.communicate()

#Get output and error string
cmd_output_str = cmd_output.decode('utf-8', errors='ignore').strip()
cmd_err_str = cmd_err.decode('utf-8', errors='ignore').strip()

print(cmd_output_str)
print(cmd_err_str)

Вывод здесь будет

Darwin LUSC02WK0GKHTDH 18.5.0 Darwin Kernel Version 18.5.0: Mon Mar 11 20:40:32 PDT 2019; root:xnu-4903.251.3~3/RELEASE_X86_64 x86_64

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...