Python запустить bash скрипт перед выходом - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь вызвать сценарий bash с python, но мне нужно, чтобы он был выполнен последним.

Я подумал, что просто добавив это в конец моего сценария, можно сделать это:

val = subprocess.check_call("/scripts/files.sh '%s'" % title,   shell=True)

Но он выполняется перед кодом над ним, почему?

Последние строки над ним:

print(q_1)
print(q_2)
print(q_3)
cursor.execute(q_1)
cursor.execute(q_2)
cursor.execute(q_3)
mariadb_connection.commit()
cursor.close()
mariadb_connection.close()

Я использую val = subprocess.check_call перед всем этим код для запуска другого скрипта bash, если это имеет значение

Как я могу быть уверен, что мой скрипт будет выполняться последним?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Давайте предположим, что ваш скрипт выглядит примерно так:

obj = MySqlSomething()
things
more things
val = subprocess.check_call(x)

Если класс MySqlSomething имеет деструктор, он будет вызван после check_call, когда вы упадете в конце скрипта и obj выходит за рамки. Исправление должно сделать это раньше, тривиально, переместив материал в функцию:

def main_main():
    obj = MySqlSomething()
    things
    more things

main_main()
val = subprocess.check_call(x)

При таком расположении obj выходит за рамки в конце main_main.

0 голосов
/ 08 февраля 2020

Python - язык сценариев, то есть строки выполняются с первого до последнего. Все, что вам нужно сделать, это поместить команду в tgr enf вашего python сценария

...