使用运行命令时无法获得正确的输出os.popen公司python中的python

2024-06-17 11:45:02 发布

您现在位置:Python中文网/ 问答频道 /正文

import os

def getName(AAPTLocation, apkFile):

    AAPTLocation = AAPTLocation.replace('\\','\\\\')
    apkFile = apkFile.replace('\\','\\\\')
    pname = ''
    cmd = ' \"\"' + AAPTLocation + '\" dump badging \"' + apkFile + '\"\"'
    p = os.popen(cmd)
    while 1:
        s = p.readline()
        if s:
            print s
            if s.find('package') != -1 and s.find('name') != -1:
                pname = s  
        if not s:
            break
    p.close()
    return pname

AAPTLocation = 'C:\Program Files\Android\android-sdk\platform-tools\aapt.exe'
apkFile = 'C:\APKs\test.apk'
print getName(AAPTLocation, apkFile)

我要跑了aapt.exe文件,获取apk的包名并解析结果。在

运行“C:\Program Files\Android\Android sdk\platform tools\aapt.exe文件“转储徽标”C:\APKs\测试.apk“直接在命令行界面中运行良好。不过,在我粘贴到上面的python脚本中,它没有给我任何东西。在

我已经试过避开反斜杠了,但这一点也没用。我的代码有问题吗?。在


Tags: cmdifosfindprogramexereplaceapk
1条回答
网友
1楼 · 发布于 2024-06-17 11:45:02

您需要将python文本中的斜杠加倍,否则将被解释为转义代码的开头:

>>> 'C:\Program Files\Android\android-sdk\platform-tools\aapt.exe'
'C:\\Program Files\\Android\x07ndroid-sdk\\platform-tools\x07apt.exe'
>>> 'C:\\Program Files\\Android\\android-sdk\\platform-tools\\aapt.exe'
'C:\\Program Files\\Android\\android-sdk\\platform-tools\\aapt.exe'
>>> print 'C:\\Program Files\\Android\\android-sdk\\platform-tools\\aapt.exe'
C:\Program Files\Android\android-sdk\platform-tools\aapt.exe

请注意,在第一个示例(来自代码)中,python如何将\a条目解释为hex07字符,即BELL的ASCII代码。在

另一种方法是使用原始python字符串文本,在其前面加上字母r

^{pr2}$

有关字符串转义如何在字符串文本中工作的详细信息,请参见the string literals documentation。在

相关问题 更多 >