请教Python如何终止主程序

请教Python如何终止主程序,第1张

return break 都可以终止函数的运行

exit(0) # 无错误退出

exit(1) # 有错误退出

这两条语句一般都会加在程序的最后 因为exit是迫使系统去终止程序的运行!

这个问题是因为python解释器环境遇到一些不能处理异常而结束了,

由于你的Pycharm工具底层其实也是考pythonexe进程来解释Python程序的,当pythonexe出现异常后,你的程序就不能执行了。

只要重启Pycharm工具,该工具会自动恢复pythonexe的。别担心

Python语言很容易上手模块。比如你编写了一个模块my_libpy,只需在调用这个模块的程序中加入一行import my_lib即可。

这样设计的好处是,初学者能够非常方便地执行命令。但是对攻击者来说,这等于是为恶意程序大开后门。

尤其是一些初学者将网上的Python软件包、代码下载的到本地~/Downloads文件夹后,就直接在此路径下运行python命令,这样做会给电脑带来极大的隐患。

别再图方便了

为何这样做会有危险?首先,我们要了解Python程序安全运行需要满足的三个条件:

系统路径上的每个条目都处于安全的位置;

“主脚本”所在的目录始终位于系统路径中;

若python命令使用-c和-m选项,调用程序的目录也必须是安全的。

如果你运行的是正确安装的Python,那么Python安装目录和virtualenv之外唯一会自动添加到系统路径的位置,就是当前主程序的安装目录。

这就是安全隐患的来源,下面用一个实例告诉你为什么。

如果你把pip安装在/usr/bin文件夹下,并运行pip命令。由于/usr/bin是系统路径,因此这是一个非常安全的地方。

但是,有些人并不喜欢直接使用pip,而是更喜欢调用/path/to/python -m pip。

这样做的好处是可以避免环境变量$PATH设置的复杂性,而且对于Windows用户来说,也可以避免处理安装各种exe脚本和文档。

所以问题就来了,如果你的下载文件中有一个叫做pippy的文件,那么你将它将取代系统自带的pip,接管你的程序。

下载文件夹并不安全

比如你不是从PyPI,而是直接从网上直接下载了一个Python wheel文件。你很自然地输入以下命令来安装它:

~$ cd Downloads

~/Downloads$ python -m pip install /totally-legit-packagewhl

这似乎是一件很合理的事情。但你不知道的是,这么 *** 作很有可能访问带有XSS JavaScript的站点,并将带有恶意软件的的pippy到下载文件夹中。

下面是一个恶意攻击软件的演示实例:

~$ mkdir attacker_dir

~$ cd attacker_dir

~/attacker_dir$ echo 'print("lol ur pwnt")' > pi

建议用subprocess

因为如果你的程序不会自动停止,那么用ossystem(cmd),cmd会一直持续运行知道调用的程序返回结果。

subprocess可以开启一个子线程,在子线程里面调用,在你需要的时候就可以把这个子线程关掉,这样代码也更灵活

例如:

p = subprocessPopen("your command")

#todo

#anything you want

timesleep(10)

pkill()

这段代码就是在"your command"运行10秒以后,把它杀掉

第一个问题:因为主进程已经结束,相关的资源已经释放,而线程还在后台运行,所以会导致线程找不到相关的资源和定义

第二个问题:因为主程序结束的时候,并没有等待子线程结束,也没有强制关闭子线程,因此还在后台运行,有两个办法可以让他们同时结束,一个办法是在在构建进程的时候增加参数 deamon=True, 第二个办法就是在程序最后增加thread1join(),thread2join()

pythonwhile循环结束后后续程序不执行是因为

如果数字有效,则用户必须输入其所有类的字母等级。在提交空行之前,代码必须一直接受输入。我在这部分使用while循环。你知道吗

但是一旦他们所有的成绩都提交了,并且他们输入了一个空行,我就需要用原始输入来计算他们的平均绩点。我的问题是while循环结束后似乎没有其他代码运行。我想运行一个for循环来检查输入并将其转换为GPA分数,但是不管我把它放在哪里/我在里面放了什么,代码都会在输入提交后结束。你知道吗

以下是我所做的:

#python 27

import time #导入 time类

start=timeclock()

def func(a,b):

while True:

end=timeclock ()

if int(end-start)==10:

print('Warning: Timeout!!'5)

break

a=a+b

print a

func(1,2)

主要思路:开始时间-当前时间=10则停止运行并输出时间到了(注意缩进)

以上就是关于请教Python如何终止主程序全部的内容,包括:请教Python如何终止主程序、pycharm python文件:进程已结束,退出代码为1,怎么处理、python程序运行结束后,怎么让它自动回到开头重新运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9430997.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存