[英]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.