2014-07-03 4 views
2

У меня есть раздел питона, который я ударяю головой о стену. Я не разработчик/программист на Python. Однако мне было поручено переделать некоторые функции в этом приложении, и я не могу понять, что это ищет. У меня есть программа bash, support.sh, которая называется. Он делает то же самое, что и старый, но я удалил 500 строк бесполезного кода. Он собирает кучу журналов и другую информацию, а затем я rsync некоторые каталоги и через них в/tmp/"$ bundleName", который затем создает zip.Что это за функция python ищет?

Для запуска процесса существует сценарий python, который вызывается, и который вызывает мой сценарий bash. Вот сегмент, который проверяет мой bash, но я понятия не имею, что он ищет, чтобы обозначить завершение моей программы bash. Как только я знаю, что он ищет, чтобы обозначить мой bash, я добавлю, что до конца моей программы это означает, что это сделано.

Вот питон, который ищет статус моего Баш:

def checkSupportBundleGenerationStatus(bundle): 
    try: 
     f=open(SUPPORT_BUNDLE_DIR + bundle + '/' + SUPPORT_BUNDLE_LOG,'r') 
     blog=f.read() 
     f.close() 
    except: 
     sendError("Invalid bundle") 
    log.message(cgiutil.LOG_INFO, "Log bundle generation output so far %r bytes." % len(blog)) 
    filename=None 
    lines = blog.splitlines() 
    for l in lines: 
     pair = l.split(':', 1) 
     if len(pair) == 2 and pair[0] == 'File': 
      filename=pair[1].strip() 
      break 
    blog=re.sub(r'\rPreparing Files: [-\\|/]','',blog) 
    if filename: 
     dlPath=filename.replace(SUPPORT_BUNDLE_DIR,'',1) 
     try: 
      fileSize=os.stat(filename).st_size 
     except: 
      sendError('Error accesing bundle zip') 
     lastSlash=filename.rfind("/") 
     if lastSlash != -1 : 
      filename=filename[lastSlash+1:] 
      dlMessage='''<form action="%s" method="post"> 
<input type="hidden" name="HTTP_AUTHORIZATION" value="%s"/> 
%s (%s) is ready for download. <input type="submit" value="Download"> 
</form>''' % (
       buildGetQuery(downloadbundle=dlPath), 
       os.environ['HTTP_AUTHORIZATION'], 
       filename, 
       convertBytes(fileSize) 
      ) 
     sendBundlePage(dlMessage,blog) 
    else: 
     sendBundlePage(WAIT_MSG,blog,buildGetQuery(checkbundle=bundle), os.environ['HTTP_AUTHORIZATION']) 

Спасибо!

+6

Я не вижу какой-либо части этого кода, вызывает сценарий bash. – user2357112

+2

Он ищет линию формы 'Файл: '. Если он находит это, он запускает весь код после 'if filename:', иначе он переходит в предложение 'else'. – Barmar

+1

@ user2357112 Этот код запускается _after_ запускает скрипт bash, обрабатывает файл журнала, созданный скриптом. – Barmar

ответ

2

Цикл:

for l in lines: 
    pair = l.split(':', 1) 
    if len(pair) == 2 and pair[0] == 'File': 
     filename=pair[1].strip() 
     break 

выглядит для первой линии, которая начинается с File:. Он устанавливает filename в имя файла после этого префикса. Если эта строка найдена, она будет выполнять блок кода после:

if filename: 

Если он не найден, он будет идти в:

else: 
    sendBundlePage(WAIT_MSG,blog,buildGetQuery(checkbundle=bundle), os.environ['HTTP_AUTHORIZATION']) 
+0

Отлично. Это дало мне именно то, что мне было нужно. По-видимому, в старой программе bash строка 160 объявляет $ filename, что я ~ не добавлял к моему. Я очень ценю этот взгляд, который решил мою проблему! –

Смежные вопросы