簡體   English   中英

如何避免為同一命令但輸入不同而創建多個功能?

[英]How to avoid creating multiple functions for same command but different input?

我有一個反復運行的可執行文件,稱為“ 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()

好的,假設我現在了解了您想要的內容,您想從引號中刪除傳遞的參數(已經是字符串):

您還需要在元素之間留出空間,

我也簡化了一些代碼

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'))  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM