Python擷取apk檔案URL地址執行個體_python

來源:互聯網
上載者:User

工作中經常需要提取apk檔案的特定URL地址,如是想到用Python指令碼進行自動處理。
需要用到的Python基礎知識如下:
os.walk()
函式宣告:os.walk(top,topdown=True,onerror=None)
(1)參數top表示需要遍曆的頂級目錄的路徑。
(2)參數topdown的預設值是“True”表示首先返回頂級目錄下的檔案,然後再遍曆子目錄中的檔案。當topdown的值為"False"時,表示先遍曆子目錄中的檔案,然後再返回頂級目錄下的檔案。
(3)參數onerror預設值為"None",表示忽略檔案遍曆時的錯誤。如果不為空白,則提供一個自訂函數提示錯誤資訊後繼續遍曆或拋出異常中止遍曆。
傳回值:函數返回一個元組,含有三個元素。這三個元素分別是:每次遍曆的路徑名、路徑下子目錄列表、目錄下檔案清單。
os.walk使用執行個體:刪除某個檔案夾(當然可以通過os.listdir的遞迴調用刪除)

複製代碼 代碼如下:

#! /usr/bin/env python
#coding=utf-8
import os

def Remove_dir(top_dir):
    if os.path.exists(top_dir)==False:
        print "not exists"
        return
    if os.path.isdir(top_dir)==False:
        print "not a dir"
        return
    for dir_path,subpaths,files in os.walk(top_dir,False):
        for file in files:
            file_path=os.path.join(dir_path,file)
            print "delete file:%s"  %file_path
            os.remove(file_path)
        print "delete dir:%s" %dir_path
        os.rmdir(dir_path)

#調用
Remove_dir(r"C:\Users\Administrator\Desktop\abc")


Python執行系統命令的方法 os.system(),os.popen(),commands.getstatusoutput() 
os.system()無法獲得到輸出和傳回值;
通過os.popen() 返回的是 file read 的對象,對其進行讀取 read() 的操作可以看到執行的輸出,但是得不到傳回值。
通過 commands.getstatusoutput() 方法就可以獲得到傳回值和輸出  
(status, output) = commands.getstatusoutput('cat /proc/cpuinfo') 
3.  Python中operator模組的contains(...) 函數
contains(a, b) -- Same as b in a (note reversed operands). 判斷b是否被a包含 
基礎知識介紹完了,可以上代碼了:
複製代碼 代碼如下:

import os
import operator
import commands
#from signature import *

inputdir = "./tmp"

for path, dir, files in os.walk(inputdir):
    for file in files:
    if not file.endswith('.apk'):
        #print "not apk file."
        continue
    apkpath = os.path.join(inputdir, file)
    cmd = './xxx -d %s' %apkpath
    output = os.popen(cmd)
    s = set()
    #按行尋找URL
    for line in output:
        if operator.contains(line, "http://"):
            #print tmp
            start = line.index('''http://''')
            end = line.index('''"''',start)
            url = line[start:end]
            s.add(url)
    cmd = './yyy -t a.expense.mdk.a.tvd %s' %apkpath
    #擷取命令執行結果及傳回值
    status, output = commands.getstatusoutput(cmd)
#    print output

    if output.startswith('find'):
        print output

        for url in s:
            if url.find('imei')!=-1:
                print 'url is %s' %url.strip()
        #print '========================='
    s = ''

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.