[파이썬] 파이썬 옵션에 따른 인자받기 코드
#-*- coding: utf-8 -*-
import sys, os
from subprocess import *
import re
import OptionHelper
class PackageNameMatch(object):
'''
'''
def __init__(self):
'''
'''
def match(self, s):
permReg = re.compile(r'<manifest.+package="(.+?)" .+>$')
res = permReg.match(s)
if res is not None:
return res.group(1)
return None
def Option_I(argv):
apkName = argv.pop(0)
process = Popen(["python", "../androguard-master/androaxml.py","-i",apkName], stdout=PIPE)
(output, err) = process.communicate()
exit_code = process.wait()
outputArray = output.splitlines()
# 패키지명을 출력한다.
p = PackageNameMatch()
for s in outputArray:
res = p.match(s)
if res is not None:
print res
return 0
option_0 = {"type" : "option", "name" : "-i", "value" : "<APK File>", "desc" : "input apk file"}
option_1 = {"type" : "comment","name" : "output", "desc" : "print pacakage name in apk"}
options = [option_0, option_1]
def PrintOption(name, argv):
global options
o = OptionHelper.OptionParser(name, options)
o.printOption()
exit()
def main(argc, argv):
# 옵션과 그 옵션을 줄경우 호출할 함수를 정의한다.
optionMap = {
"-i" : Option_I,
"-help" : PrintOption,
"-h" : PrintOption,
}
scriptName = argv.pop(0)
if argc == 1:
PrintOption(scriptName, argv)
exit()
# 인자에 따른 함수 호출
try:
while argv:
arg = argv.pop(0)
optionMap.get(arg)(argv)
except:
PrintOption(scriptName, argv)
return
if __name__ == '__main__':
main(len(sys.argv),sys.argv)