如何避免为同一命令但不同的输入创建多个函数?

2024-05-15 04:58:42 发布

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

我有一个反复运行的可执行文件,叫做“a”,可以用许多参数调用它。我正在考虑为它定义不同的函数,然后在main中调用它,如下所示。一个命令的输出变成下一个命令的输入。程序设计正确吗?不过,我知道这会管用的。你知道吗

def d(x, z):    

    c =['a', 'x', '-m', '1', '-d', '-g', '5', '-o', 'z1']

    return c

def e(x, z1):    

    b =['a', 'x','-m', '1', '-d', '-p', 'in', '-o', 'z2']

    return b

def f(x, z2):    

    k =['a', 'x','-m', 'side', '-d', '-y','-p', 'in', '-o', 'z3']

    return k

def main():

    run1 = d('in.txt', 'w1')
    j = ' '.join(run1)
    result1 = subprocess.call(j)

    run2 = e('w1', 'w2')
    m = ' '.join(run2)
    result2 = subprocess.call(m)

    run3 = f('w2', 'w3')
    m = ' '.join(run3)
    result3 = subprocess.call(m)    

if __name__ == '__main__':
    main()

Tags: in命令returnmaindefcallw1subprocess
1条回答
网友
1楼 · 发布于 2024-05-15 04:58:42

好的,假设我现在理解了您的要求,您希望从引号中删除传递的参数(已经是字符串):

你还需要在元素之间留出空间

我还简化了一些代码

def d(x, z):    
    return ' '.join(['a', x , '-m', '1', '-d', '-g', '5', '-o', z])

def e(x, z):    
    return ' '.join(['a', x, '-m', '1', '-d', '-p', 'in', '-o', z])

def f(x, z):    
    return ' '.join(['a', x, '-m', 'side', '-d', '-y','-p', 'in', '-o', z])


def main():

    result1 = subprocess.call(d('in.txt', 'w1'))

    result2 = subprocess.call(e('w1', 'w2'))

    result3 = subprocess.call(f('w2', 'w3'))    

if __name__ == '__main__':
    main()

编辑:我不认为这是更好的,但如果你有很多选择,也许你可以从这一点,并改善它(或其他人可以建议更好的):

def generate_line(x, z, flag):    
    flags = {'d':('1',('-g','5')), 'e':('1',('-p','in')),'f':('side',('-y','p','in'))}
    aa,bb = flags[flag]
    l = ' '.join(['a', x , '-m', aa, '-d', *bb, '-o', z])
    return l

def main():
    result1 = print(generate_line('in.txt', 'w1','d'))
    result2 = print(generate_line('w1', 'w2','e'))
    result3 = print(generate_line('w2', 'w3','f'))  

相关问题 更多 >

    热门问题