subprocess.Popen中的awk命令-获取错误

时间:2018-08-18 17:10:11

标签: python-2.7

我正在尝试这段代码:这段代码可以正常工作,并给了我所需的输出。

import os,sys
import sitenamevalidation
import getpass
import subprocess

site_name = sys.argv[1]


def get_location(site_name):

    site_name_vali = sitenamevalidation.sitenamevalidation(site_name)
    if site_name_vali == True:
            pass
    else:
            print("Sitename should be in this format [a-z][a-z][a-z][0-9][0-9] example abc54 or xyz50")
            sys.exit(0)
    site = site_name[:3].upper()
    user =getpass.getuser()
    path = os.path.join('/home/',user,'location.attr')
    if os.path.exists(path) == True:
            pass
    else:
            print("Not able to find below path "+path)

    #p1 = subprocess.Popen(['awk', '/site/{getline; print}' , path] ,stdout=subprocess.PIPE)
    p1 = subprocess.Popen(['awk', '/ABC/{getline; print}' , path] ,stdout=subprocess.PIPE)
    output=p1.communicate()
    print str(output[0].strip().lower())

if __name__ == "__main__":
    get_location(site_name)

主要问题是,如果我使用以下命令

  p1 = subprocess.Popen(['awk', '/ABC/{getline; print}' , path] ,stdout=subprocess.PIPE)

其中ABC是路径中的静态值,它可以正常工作,并提供所需的输出,但我希望用户输入该值(在我的代码中位于站点)。当我这样做

p1 = subprocess.Popen(['awk', '/site/{getline; print}' , path] ,stdout=subprocess.PIPE)

它正在寻找该文件中不存在的站点。我希望将站点变量的值放在该命令中,而不是站点本身。通过使用quote,双引号进行了尝试,但似乎没有任何作用。

0 个答案:

没有答案