任务需求
jenkins的自动化处理:详见【IOS+Jenkins+python】xcode初接触以及ios项目跑动的尝试和py脚本进行jenkins编译 本文主要记录使用python的注意点。之前虽然有接触过但是很多知识都忘记了。毕竟那是大一大二接触的东西,好几年过去了,记不清了。
Python 实现和问题记录
Python变量、方法、类的命名规则
# coding=utf-8
# 用户检测环境配置切换 2022-04
import os
class CheckEnvironments:
# 初始化配置
def __init__(self):
if "IS_ALPHA_ENV" in os.environ:
self.is_alpha_env = os.environ.get("IS_ALPHA_ENV")
self.work_space = os.environ.get("WORKSPACE")
# 环境变量以及appId等等配置文件的路径修改此处即可!
self.filePath = self.work_space+"修改文件.h"
@staticmethod
def _get_is_alpha_env():
return os.environ.get("IS_ALPHA_ENV")
def start_check_environment(self):
print("[ * ] start check environment.")
print("[ ! ] The filepath of check environment {}".format(self.filePath))
self.set_alpha_env(self.is_alpha_env,self.filePath)
print("[ * ] end check environment.")
def set_alpha_env(self,isAlphaEnv, filePath):
#使用测试环境:修改文件中的kAppIsAlpha 改为1,而在正式环境则为0;
alphaVal = 0
if isAlphaEnv == 'true':
alphaVal = 1
else:
alphaVal = 0
self.set_macro("kAppIsAlpha", alphaVal, filePath)
"""
set_macro 设置宏,针对后续开源处理需要对配置文件进行替换或者屏蔽处理所增加的方法
macroName 是指定宏名称,如:kAppIsAlpha
macroVal 是该宏指定的参值 如:1、0、appID等等
filePath 是考虑到文件路径和名称的修改情况,特地给的一个参;不过在本py文件中已在init中进行定义,可以在该位置进行修改。
后续针对其他配置处理可以参考set_alpha_env方法。
"""
def set_macro(self,macroName, macroVal, filePath):
print("[ * ] start setMacro")
regex1 = "{}\s\S.*".format(macroName)
regex2 = "{} {}".format(macroName, macroVal)
print("[ * ] Set {} value as {}".format(macroName, macroVal))
cmd = "gsed -i 's/{}/{}/g' {}".format(regex1, regex2, filePath)
os.system(cmd)
print("[ ! ] check_environment cmd执行命令行:{}".format(cmd))
上述代码是最终的完善版本的。
问题遇见
- 下午四点钟,对这个代码的优化,不过在跑的时候蹦了!
- 初步判断是:python对变量敏感,而且用Android studio中写的代码,没有好的提示!修改变量名统一起来即可!
- 遇到了def的问题,但是在代码中我的确def这个方法。为啥他说没?!
那么
我修改增加个self
,结果爆出这个问题:
TypeError: setAlphaEnv() takes 2 positional arguments but 3 were given
在所有的python方法中都加入一个self才可以正常运行。
Python中的self用法详解