对于一般非专业使用Python的程序员来说,基本上使用python的用途就是:用来在*.zh文件中执行*.py文件或者在命令行直接执行*.py文件。
那么基于这样的需求,我们非专业python的码农要如何来认识*.py文件中的基础模块和函数呢?
通常的二八原则,我们可以掌握少数的基础知识,来完成大多数的基础工作。
一、我们来认识模块
在各个语言的认知中,我们都有模块的意识。
例如:
C++是用 include "*.h";来引入其他头文件(*.h),这里的头文件==模块。
Java使用import java.io.*; 来引用其他java类,这里的java类==模块。
而在python,我们引入一些库,用import来引入。
import sys
import os
import shutil
二、我们来简单认识sys、os、shutil模块
例如,当前脚本为test.py:
#!/usr/bin/python
# coding=utf-8
import sys
import os
import shutil
print('========== Build Android ==========')
if len(sys.argv) < 5:
exit(1)
else:
ProjectPath = sys.argv[1]
CocosPath = sys.argv[2]
print('========== Build Parameters ==========')
print(ProjectPath)
print(CocosPath)
print('========== Cocos 构建并生成Android项目 ===========')
ConfigPath = ProjectPath + '/build-tools/buildConfig_android.json'
cmd = CocosPath + ' --project ' + ProjectPath + ' --build "platform=android;debug=true;configPath=' + ConfigPath + '"'
print(cmd)
os.system(cmd)
print('========== Build Android 完成 ===========')
# print('========== 复制APK到下载目录 ===========')
#当前版本直接输出到下载目录
# shutil.copy(ProjectPath + '/BuildTools', '/Users/visonz/Outputs')
#/Users/visonz/Outputs
##目前直接输出apk包,暂时不考虑打包安卓项目,后面可能需要做一下
下面,我们来一行一行代码介绍其中的含义:
第1行:python中,用“#”来作注释,但是“#”又并不只是用来作注释,当前行就是例子,#!/usr/bin/python是用来告诉操作系统执行test.py脚本的解释器。
第2行:如第一行的说明一样,“#”并不只是注释,该行告诉了执行test.py脚本的解释器,要utf-8的编码格式来执行。
第3、4、5行:引入其他库(模块),来丰富我们的脚本的功能。
其中:
sys的主要作用是:获取执行test.py脚本时,sys.argv是一个数组,代表了执行该脚本时的所有参数。其中,sys.argv[0]表示代码本身文件路径,之后的元素是后面跟随的参数列表。
os的主要作用是:os.system,是执行一个sh命令行。
shutil的主要作用是:处理文件,包括复制、删除、移动、压缩和解压等。
第7行:print函数:它属于内建函数,所以不需要引用其他模块。print主要作用:用来在终端输出信息,就像java的println和c++的cout,这里不过度阐述。
第9行->第13行:这里是一个if语句。其中exit为立即退出该脚本;ProjectPath=sys.argv[1]为一个赋值语句。python中没有变量类型,也不需要定义的关键字,直接就可以定义变量。
第25行:os.system用来执行一个sh命令,其中的参数:cmd,是一个可执行的sh命令字符串。其中:CocosPath为可执行程序的路径,ProjectPath为需要执行的项目路径,ConfigPath为配置文件的路径。
执行的案例为:
/Applications/CocosCreator/Creator/3.3.2/CocosCreator.app/Contents/MacOS/CocosCreator --project /Users/visonz/.jenkins/workspace/Cocos_Build --build "platform=android;debug=true;configPath=/Users/visonz/.jenkins/workspace/Cocos_Build/build-tools/buildConfig_android.json"
第30行->第34行:这里的注释才是真正的注释,不含任何作用。