python自动化常用模块_python自动化常用模块

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import subprocess

import sys, os

import commands

import shutil

import re

import hashlib

import urllib

import oss2

import argparse

from urlparse import urlparse

import time

import random

import json

from xml.etree.ElementTree import ElementTree,Element

from string import replace

import requests

#--------1--------标记

# 打印各种颜色的log

class Log:

@staticmethod

def e(msg):

print(Log.red + '[x]:' + msg + Log.end)

@staticmethod

def w(msg):

print(Log.yellow + '[!]:' + msg + Log.end)

@staticmethod

def i(msg):

print(Log.green + '[+]:' + msg + Log.end)

@staticmethod

def t(msg):

print(Log.blue + '[-]:' + msg + Log.end)

red = '\033[1;31m'

green = '\033[1;32m'

yellow = '\033[1;33m'

blue = '\033[1;34m'

end = '\033[00m'

# 简单标记mark

def mark(marked_words):

print_words = "|=|-----"+marked_words+"\n"

print print_words

#--------2--------上传

# 单个文件上传到oss

def upload_file_oss():

auth = oss2.Auth('填写自己的AccessKey', '填写自己的AccessKeySecret')

bucket = oss2.Bucket(auth, '填写域名', '填写bucket')

apkname="test.apk"

apk_save_path="./test"

bucket.put_object_from_file('test/'+apkname, apk_save_path+'/'+apkname)

# 遍历目录

def List_Folder_Contents(rootDir,f):

for lists in os.listdir(rootDir):

path = os.path.join(rootDir, lists)

if(os.path.isfile(path)):

print path

f.append(path)

if os.path.isdir(path):

List_Folder_Contents(path,f)

return f

# 上传目录到oss

def upload_dir_oss():

auth = oss2.Auth('填写自己的AccessKey', '填写自己的AccessKeySecret')

bucket = oss2.Bucket(auth, '填写域名', '填写bucket')

### 遍历目录

Log.i("list dir's files")

output_path="./test"

f = []

f=List_Folder_Contents(output_path,f)#调用List_Folder_Contents函数

print f

### 上传OSS

Log.w("upload dir to OSS")

for i, val in enumerate(f):

print ("key:%svalue:%s" % (i + 1, val))

list_name=val.split("/")[-2]+"/"+val.split("/")[-1]

Log.i("list_name:"+list_name)

result = bucket.put_object_from_file('/test/'+list_name,val)

print('http status: {0}'.format(result.status))

if(result.status == 200):

Log.i("upload:"+val+" to OSS success")

#--------3--------json

# touch file

def Touch(file_name,file_path):

os.chdir(file_path)

if file_name in os.listdir('.'):

print("file exist!")

else:

print("creating%s" %file_name)

fid = open(file_name,'w')

fid.close()

# create json 文件

def create_json(changeLog,marketCode,md5,url,versionCode,versionName,json_name):

json_save_path = "./test"

if not os.path.exists(json_save_path):

os.makedirs(json_save_path)

Log.t('Create json_save_path:'+json_save_path)

Touch(json_name,json_save_path)

# write json to file

Log.i("start to write json info to file")

public_path="./"

json_path=public_path+'/'+json_name

file =json_path

fb = open(file,'w')

data={"changeLog":changeLog,"key1":value1,"key2":value2,"key3":value3,"key4":key4,"key5":key5}

dataDict=json.dumps(data, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': ')).replace("\\n","n")

print dataDict

fb.write(dataDict)

fb.close()

return json_path

#--------4--------md5

# 计算md5

_FILE_SLIM=100*1024*1024

def File_md5(filepath):

calltimes = 0

hmd5 = hashlib.md5()

fp = open(filepath, "rb")

f_size = os.stat(filepath).st_size

if f_size > _FILE_SLIM:

while (f_size > _FILE_SLIM):

hmd5.update(fp.read(_FILE_SLIM))

f_size /= _FILE_SLIM

calltimes += 1

if (f_size > 0) and (f_size <= _FILE_SLIM):

hmd5.update(fp.read())

else:

hmd5.update(fp.read())

return hmd5.hexdigest()

# 验证md5值 (与download连用)

def verify_md5(md5,url,save_path,filename):

Log.i("verify md5 vaule")

download(url,save_path,filename)

download_md5 = File_md5(save_path+'/'+filename)

Log.e("md5:"+md5+" download_md5:"+download_md5)

if download_md5 == md5:

Log.i("md5 right")

else:

Log.i("md5 wrong")

quit()

#--------5--------杂七杂八

# 下载文件

def download(url_str,save_path,filename):

full_path = save_path + '/' + filename

Log.i("full_path:"+full_path)

try:

urllib.urlretrieve(url_str,full_path)

print "download success"

return full_path

except:

print "download failed"

return False

# 读取changeLog.txt

def readChanegLog(filepath):

info = open(filepath).read()

info = info.decode('utf-8')

new_info = info.replace('\n','\\n')

return new_info

# 获取随机值

def getRandomNum(num):

pool='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

i = 0

randomNum=''

while i < num:

i+=1

tmp = random.choice(pool)

randomNum = randomNum+tmp

return randomNum

# 从URL中获取文件名

def get_filename(url_str):

url = urlparse(url_str)

i = len(url.path) - 1

while i > 0:

if url.path[i] == '/':

break

i = i - 1

filename=url.path[i+1:len(url.path)]

if not filename.strip():

return False

return filename

# 上传接口

def upload_api():

Log.i("post API start")

default_url = "http://xx.xxxx.cn/xxxxx/xxxxxx/xxxxx/xxxxx.php"

data={"key1":value1,"key2":value2}

dataDict=json.dumps(data, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ': '))

r = requests.post(default_url, data)

print dataDict

Log.i("post API finish")

# 接收参数

def parserParameter():

parser = argparse.ArgumentParser(description='This is update script!')

required = parser.add_argument_group('required arguments')

parser.add_argument('--name1', required=True, help='apk name(formate:{k1}-{k2}-{k3}-v{k4}.apk)')

parser.add_argument('--name2', required=True, help='XXXX')

args = parser.parse_args()

return args

if __name__ == '__main__':

### 解析参数

args=parserParameter()

name1=args.name1

name2=args.name2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值