Python 在退出前运行 bash 脚本

问题描述 投票:0回答:2

我正在尝试使用 python 调用 bash 脚本,但我需要它是最后执行的事情。

我想只要在我的脚本末尾添加这个就可以了:

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 脚本,如果这很重要的话

我如何确定我的脚本将是最后执行的?

bash python-2.7
2个回答
1
投票

假设您的脚本看起来像这样

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
末尾超出范围。


-1
投票

Python 是脚本语言,这意味着这些行是从第一行到最后一行执行的。 您所要做的就是将命令放在 Python 脚本的末尾

© www.soinside.com 2019 - 2024. All rights reserved.