2009-06-19 180 views
2

我運行一個腳本來養活一個exe文件中聲明如下圖所示:Python和if語句

for j in ('90.','52.62263.','26.5651.','10.8123.'): 
    if j == '90.': 
     z = ('0.') 
    elif j == '52.62263.': 
     z = ('0.', '72.', '144.', '216.', '288.') 
    elif j == '26.5651': 
     z = ('324.', '36.', '108.', '180.', '252.') 
    else: 
     z = ('288.', '0.', '72.', '144.', '216.') 

    for k in z: 

     exepath = os.path.join('\Program Files' , 'BRL-CAD' , 'bin' , 'rtarea.exe') 
     exepath = '"' + os.path.normpath(exepath) + '"' 
     cmd = exepath + '-j' + str(el) + '-k' + str(z) 

     process=Popen('echo ' + cmd, shell=True, stderr=STDOUT) 
     print process 

我使用命令提示符,當我用這些數字運行exe有些時候它似乎沒有按順序。有時它會打印出52.62263的3條語句,但在它們全部打印之前,它將打印出一條26.5651,然後返回52.62263。這不僅僅是這樣的數字。不同的運行可能是不同的數字(「兩個​​」90個語句之間的52.62263)。總而言之,我希望它能夠從頂部到底部打印它。任何建議和使用我的代碼有用的解決方案?謝謝!

回答

6

我覺得發生了什麼現在的問題是,你是不是在等待這些過程完成正在打印之前。嘗試這樣的事情在你的最後兩行:

​​
+0

完美!謝謝:) – Tyler 2009-06-19 15:07:52

8

z = ('0.')不是一個元組,因此您的for k in z循環將迭代字符「0」和「。」。添加一個逗號來告訴Python你希望它是一個元組:

z = ('0.',) 
+1

這修正了90,但第三和第四52.62263聲明之間仍然有26.5651? – Tyler 2009-06-19 15:04:52

5

eduffy說什麼。這是一個小清潔劑;只是打印,但你的想法:

import os 

data = { 
    '90.': ('0.',), 
    '52.62263.': ('0.', '72.', '144.', '216.', '288.'), 
    '26.5651.': ('324.', '36.', '108.', '180.', '252.'), 
    '10.8123.': ('288.', '0.', '72.', '144.', '216.'), 
} 

for tag in data: 
    for k in data[tag]: 
     exepath = os.path.join('\Program Files', 'BRL-CAD', 'bin', 'rtarea.exe') 
     exepath = '"' + os.path.normpath(exepath) + '"' 
     cmd = exepath + ' -el ' + str(tag) + ' -az ' + str(data[tag]) 
     process = 'echo ' + cmd 
     print process 
2

既然你做了這個位的代碼的一些帖子,讓我剛剛正確/ pythonify /美化了整個事情:

for j,z in { 
     '90.'  : ('0.',) , 
     '52.62263.' : ('0.', '72.', '144.', '216.', '288.') , 
     '26.5651.' : ('324.', '36.', '108.', '180.', '252.') , 
     '10.8123.' : ('288.', '0.', '72.', '144.', '216.') 
    }.iteritems(): 

    for k in z: 
     exepath = os.path.join('\Program Files' , 'BRL-CAD', 'bin' , 'rtarea.exe') 
     exepath = '"%s"' % os.path.normpath(exepath) 
     cmd = exepath + '-j' + str(el) + '-k' + z 

     process = Popen('echo ' + cmd, shell=True, stderr=STDOUT) 
     print process