讲一下这段代码作用
毕竟我们经常看到
if __name__ == '__main__':
看别人写的代码经常会看到这个东西
这行代码的作用是什么呢?本节就详解讲解以下它的作用。
一般情况下,当我们写完自定义的模块之后,都会写一个测试代码,检验一些模块中各个功能是否能够成功运行。例如,创建一个 candf.py 文件,并编写如下代码:
'''
摄氏度和华氏度的相互转换模块
'''
def c2f(cel):
fah = cel * 1.8 + 32
return fah
def f2c(fah):
cel = (fah - 32) / 1.8
return cel
def test():
print("测试数据:0 摄氏度 = %.2f 华氏度" % c2f(0))
print("测试数据:0 华氏度 = %.2f 摄氏度" % f2c(0))
test()
我们创建一个模块之后,经常要写一个测试模块,测试一下这个模块是不是正常运行的。
单独运行此模块文件,可以看到如下运行结果
测试数据:0 摄氏度 = 32.00 华氏度
测试数据:0 华氏度 = -17.78 摄氏度
单独运行这个模块,运行结果是这样的。可以输出两个东西
candf.py 模块文件的基础上,在同目录下再创建一个 demo.py 文件,并编写如下代码:
import candf
print("32 摄氏度 = %.2f 华氏度" % candf.c2f(32))
print("99 华氏度 = %.2f 摄氏度" % candf.f2c(99))
导入我们编写的模块,输出一些功能
测试数据:0 摄氏度 = 32.00 华氏度
测试数据:0 华氏度 = -17.78 摄氏度
32 摄氏度 = 89.60 华氏度
99 华氏度 = 37.22 摄氏度
可以看到将模块中,原来的Print也进行输出了这不是我们想要的结果,将原来的模块也进行了输出。
可以看到,当前运行的程序,其 name 的值为 main,而导入到当前程序中的模块,其 name 值为自己的模块名。
因此,if name == ‘main’: 的作用是确保只有单独运行该模块时,此表达式才成立,才可以进入此判断语法,执行其中的测试代码;反之,如果只是作为模块导入到其他程序文件中,则此表达式将不成立,运行其它程序时,也就不会执行该判断语句中的测试代码。
进行判断,我这个模块被单独运行时候,执行的一些操作。
os模块还有一个walk函数,用来遍历目录树,
这样目录树,我们需要在目录树中,去找到mp4文件,这样的目录目录里面有目录。、
当然glob模块会更加好用一些
glob切换目录
path = 'uploads' # 该路径是在 static/uploads
def get_all_images(path):
os.chdir('static') # 改变工作目录到 static
fs = glob.glob(path + '/*.jpg') # uploads/*.jpg 要直接查找uploads下的文件,需要工作目录是uoloads的父级目录
os.chdir('..') # 改变工作目录回到todo
return fs
可以处理所有子目录下文件
“/”表示处理所有文件夹
""表示处理所有文件加文件夹
"**/*.py"表示处理所有带Py结尾的文件