❶ 如何判断python程序运行在cmd中或pycharm中
取巧的办法,判断是不是文件右键运行的
import time
import os
for i in range(100):
# 不是pycharm运行
if __name__ != '__main__':
print(i)
time.sleep(0.1)
os.system('cls')
# 是pycharm右键运行
else:
print(f'\r{i}',end='',flush=True)
time.sleep(0.1)
❷ python怎么看程序是否在运行
你说的文件有没有运行,指的是什么意思?是说一个应用程序有没有被运行?还是一个文件读取到尾巴了?
如果是前者,那么你再使用os.popen,可以拿到运行应用程序的剧本,然后你可以查看这个运行程序的状态,是否在运行是否结束。
如果是看文件,有没有读到底那你就直接for循环到底他就自动没有数据了
❸ python判断是否继续
python判断是否继续是因为你的代码发生了错误。
在执行第一个文件后,程序停止并询问是否继续批处理。这会导致用户输入延迟。希望我的回答能够帮到你,如果不明白,您可以继续追问!谢谢!祝您生活愉快!
❹ python提供了哪三个非常重要的语句来应对python程序在运
1、If语句详解与实践
之前已经用过很多次If函数了,这边我再做一个简单介绍和一些新内容的补充吧,If函数的底层逻辑就是用来判断,如果满足条件则执行下面的语句。
基本的语法逻辑如下,注意记得写冒号及代码前的缩进:
if 条件:
代码1
else:
代码2
1
2
3
4
其中两个注意点,之前也提过了,就是缩进与英文格式的标点符号,有的时候,你忘记缩进或者冒号是中文格式的时候,程序就会报错,不过Pycharm和Spyder都会在那一行提醒你这一行的写法有问题,所以倒也不用太担心。
现在我们再来看看之前写过这个代码,是不是会感觉清晰很多呢。
score = 100
year = 2018
if (score < 0) and (year == 2018):
print('录入数据库')
else:
print('不录入数据库')
1
2
3
4
5
6
我们下面再补充些内容,其实掌握上面的内容已经完全足够了,下面的只是作为一个知识点的补充。比如你考试考了80分,最简单的是:
score = 85
if score >= 60:
print('及格')
else:
print('不及格')
1
2
3
4
5
我相信现在大家看这个代码已经完全没有问题了,输出肯定是‘及格’。那如果我除了想判断是否及格外,还想看它是否优秀(大于80分),则输出‘优秀’,该怎么弄呢。
score = 55
if score >= 80:
print('优秀')
elif (score >= 60) and (score < 80):
print('裤竖及格')
else:
print('不及格')
1
2
3
4
5
6
7
这边唯一的一个不同,就是中间加入了一个elif,这个其实就是elseif的缩写,用来提供多个结果使用的,
其实这个我做项目的时候基本没有用过,大家简单了解下即可。
2、For语句详解与实践
For语句之前有提到过一次,它的重要程度可以说仅次于If语句了,它的底层逻辑是循环,其实While的底层逻辑是循环,不过还是For用的更加普遍些。
For语句的常见使用格式为,注意记得写冒号及代码前的缩进:
for i in 区域:
代码
1
2
先举个之前讲列表的时候讲过的例子:
class1 = ['丁一', '王二麻子', '张三', '李四', '赵五']
for i in class1:
print(i)
1
2
3
用大白话来说就是:
列表class1 = ['丁一', '王埋纯茄二麻子', '张三', '李四', '赵五']
对于class1中的所有元素i:
我们都把它打印输出出来
1
2
3
这个输出代码为:
丁一
王二麻子
张三
李四
赵五
1
2
3
4
5
这个i可以换成任何东西,比如你换成j,换成一个字符串,只要和下面的print()里面的内容匹配即可。
比如我们可以写:
class1 = ['丁一', '王二麻子', '张三', '李四', '赵五']
for haha in class1:
print(haha)
1
2
3
这样输出的结果其实是一样的。
For语句还通常与range()函数合用,range函数的话其实就是一个类似于list的东西,只不过它可能更像list的长度,你想循环多少次,在range的括号里填写几就可以,比如我写for i in range(3),那么它就是循环3次:
for i in range(3):
print('hahaha')
1
2
这个它就会输出三行‘hahaha’。
我担心大家可能会对这个for i in range(3)中的i还有疑惑,刚刚i不是代表列表里的每一个元素吗,这边这个i又是什么意思呢?这边我给大家做一个偷懒的总结:
(1)对于"for i in 区域"来说,如果说这个区域是一个列表,那么那个i就表示这个列表里的每一个元素;
(2)对于"for i in 区域"来说,如果说这个区域是一个range(n),那么那个i就表示0到n -1这n个数字,之前提到过,python中序号都是从0开始的,所以这边弯察也是从0开始,到n - 1结束。
(3)对于"for i in 区域"来说,如果说这个区域是一个字典,那么i表示的就是字典的中的键(了解即可,很长一段时间用不到)
还有个非常重要的知识点:for i in range(5)的话,它的确会循环5次,但要注意,在python中,第一个元素的序号其实是0,所以如果我们输入如下代码:
for i in range(5):
print(i)
1
2
那么输出的结果是从0开始的,也就是0到4
0
1
2
3
4
1
2
3
4
5
这时候你可能要问,这玩意有什么用?下面我就以舆情监控中的实战来给大家讲解下for语句在爬虫实战中的应用:
title = ['标题1','标题2','标题3','标题4','标题5']
for i in range(len(title)): #len(title)表示一个有多少个新闻,这里是5
print(str(i+1) + '.' + title[i]) #这个其实把字符串进行一个拼接
1
2
3
上面这几行代码已经很大程度就是你做项目实战用到的代码了,暂时看着有点晕也没有关系,我在教学视频里会详细介绍下的。我先用大白话来解释下这几行代码在干嘛:
爬到了一些新闻标题,放到了title这个列表里
用len(title)来获取一共有多少条新闻,并利用for和range语句来进行循环:
打印输出新闻标题,并且在前面加上序号
1
2
3
输出结果如下图所示:
其中有几个小注意点,
(1)range(len(title))这边就相当于range(5),因为len(title)就等于5,所以for i in range(len(title))就是循环5次,这里的i就表示数字0-4。
(2)为什么要写str(i + 1),因为我们要标序号,'标题1’是字符串形式的,而i是数字,我们讲过数字和字符串不能直接相加,所以要用str函数进行下转换。
(3)至于为什么不是str(i),而是str(i + 1)。是因为之前讲列表的时候提到过,在编程中,第一个序号都是0,比如之前列表里讲过的class1[0]表示“丁一”一样,这边如果写str(i)的话,那么输出的第一个序号就是“0.标题1”了。
(4)因为这里的i就表示数字0-4,title[i]的话,表示列表中的第i+1个元素,所以title[0]的话就表示第1个元素,title[4]就表示第5个元素。
通过for循环和range()函数和len()函数的联合使用,可以同时打印多个列表中的元素,代码如下:
# 在实战中的应用(可以同时打印多个列表中的内容)
title = ['标题1', '标题2', '标题3', '标题4', '标题5']
href = ['网址1', '网址2', '网址3', '网址4', '网址5']
for i in range(len(title)): # len(title)表示一个有多少个新闻,这里是5;这里的i就表示数字0-4
print(str(i+1) + '.' + title[i]) # 这个其实把字符串进行一个拼接
print(href[i])
1
2
3
4
5
6
3、While语句详解与实践
While的底层逻辑也是循环,它和For的特点不一样,最大的区别是For知道循环次数,而While的话则是不清楚循环次数。
其使用格式为,注意要写冒号以及代码前的缩进:
while 条件:
要执行的的代码
1
2
举个例子给大家看下:
a = 1
while a < 3:
print(a)
a = a + 1 #或者写成 a += 1
1
2
3
4
它白话的意思就是:
首先将1赋值给a
当 a 小于3的时候:
打印输出a
a 在原来的基础上加上1
1
2
3
4
a一开始等于1,满足小于3的条件,会打印输出1,然后a加上1等于2,此时a仍然小于3,所以仍然会执行打印输出的命令,此时打印输出2,然后a在2的基础上加上1等于3,此时a已经不满足小于3的条件了,那么循环此时便终止了。最后输出如下:
1
2
1
2
大家可以试着把数字3换成别的数试试看。
其实我们之后大多情况下用到While的时候,就是让While来一直循环(如果用for i in range(n),无论n多大,那么早晚都有结束的时候),这个在爬虫实战中的具体应用是:当每爬完一次,就自动进行下一次爬取,实现24小时不间断爬取。那么While如何能实现一直循环呢?
具体的方法其实很简单,那就用while True进行永久循环。
while True:
代码块
1
2
给大家截个图看下,下面这张图就是最终的代码效果,这个while True就是舆情监控系统实现24小时不间断爬取的秘诀,有个注意点,这个True得大写首字母,之后讲到的时候再详细介绍:
大家如果想停止while True的不停的循环,可以在点击右上角的红色终止按钮即可。我当初自己学的时候,写过这么两行代码
❺ 7种检测Python程序运行时间、CPU和内存占用的方法
1. 使用装饰器来衡量函数执行时间
有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:
import time
from functoolsimport wraps
import random
def fn_timer(function):
@wraps(function)
def function_timer(*args, **kwargs):
t0= time.time()
result= function(*args, **kwargs)
t1= time.time()
print("Total time running %s: %s seconds" %
(function.__name__, str(t1- t0))
)
return result
return function_timer
@fn_timer
def random_sort(n):
return sorted([random.random() for i in range(n)])
if __name__== "__main__":
random_sort(2000000)
输出:Total time running random_sort: 0.6598007678985596 seconds
使用方式的话,就是在要监控的函数定义上面加上 @fn_timer 就行了
或者
# 可监控程序运行时间
import time
import random
def clock(func):
def wrapper(*args, **kwargs):
start_time= time.time()
result= func(*args, **kwargs)
end_time= time.time()
print("共耗时: %s秒" % round(end_time- start_time, 5))
return result
return wrapper
@clock
def random_sort(n):
return sorted([random.random() for i in range(n)])
if __name__== "__main__":
random_sort(2000000)
输出结果:共耗时: 0.65634秒
2. 使用timeit模块
另一种方法是使用timeit模块,用来计算平均时间消耗。
执行下面的脚本可以运行该模块。
这里的timing_functions是Python脚本文件名称。
在输出的末尾,可以看到以下结果:4 loops, best of 5: 2.08 sec per loop
这表示测试了4次,平均每次测试重复5次,最好的测试结果是2.08秒。
如果不指定测试或重复次数,默认值为10次测试,每次重复5次。
3. 使用Unix系统中的time命令
然而,装饰器和timeit都是基于Python的。在外部环境测试Python时,unix time实用工具就非常有用。
运行time实用工具:
输出结果为:
Total time running random_sort: 1.3931210041 seconds
real 1.49
user 1.40
sys 0.08
第一行来自预定义的装饰器,其他三行为:
real表示的是执行脚本的总时间
user表示的是执行脚本消耗的CPU时间。
sys表示的是执行内核函数消耗的时间。
注意:根据维基网络的定义,内核是一个计算机程序,用来管理软件的输入输出,并将其翻译成CPU和其他计算机中的电子设备能够执行的数据处理指令。
因此,Real执行时间和User+Sys执行时间的差就是消耗在输入/输出和系统执行其他任务时消耗的时间。
4. 使用cProfile模块
5. 使用line_profiler模块
6. 使用memory_profiler模块
7. 使用guppy包
❻ 关于python 命令控制程序启动与结束
可以使用一个标志变量来控制程序的启动和结束。
首先,在主程序中设置一个标志变量,例如 running,用于指示程序是否处于运行状态。在程序开始时,running 应设置为 False。
然后,在每次循环中检查 running 的值。如果 running 为 True,则执行 auto() 函数;如果 running 为 False,则等待用户输入命令。
当用户输入 qd 命令时,将 running 设置为 True,并执行 auto() 函数。当用户输入 tz 命令时,将 running 设置为 False,并执行 reset() 函数。
示例代码如下:
running
running = False
while True:
cmd = input("请输入命令:")
if cmd == 'qd':
running = True
elif cmd == 'tz':
running = False
if running:
auto()
else:
reset()
在这段代码中,我们使用了一个 while 循环来不断接收用户的命令。在每次循环中,我们会读入用户的命令,并根据命令的不同设置 running 的值。如果 running 为 True,则执行 auto() 函数;如果 running 为 False,则执行 reset() 函数。
这样,用户就可以随时输入 tz 命令来停止程序,也可以输入 qd 命令来重新启动程序。
希望这些信息能够帮助您。