2014-09-22 118 views
0

下面我有一個相當簡單的python腳本,它彙編了我將使用另一個腳本的文件名列表。最初(可以看到註釋),我已經通過一個級別列表循環腳本,以充分填充列表。然而,我更喜歡「用戶」,在這種情況下,一個CSH腳本爲程序輸入值,以便能夠在移動到下一個級別之前對每個級別對應的每組文件執行其他腳本。長話短說:有沒有辦法使用CSH腳本將值傳遞給Python程序?使用csh腳本將用戶指定的參數輸入到python腳本中

#!/usr/bin/python 
############################################ 
############################################ 

levels = raw_input("Enter Levels: ") 
#levels = ('1000', '925', '850', '700', '500', '300', '250', '200') 
LEVEL = str(levels) 
MODEL = "ECMWF" 
NX = 360 
NY = 181 
date = 201409060000 
DATE = str(date) 
############################################# 

FileList = [] 
data = [] 


#for (l, item) in enumerate(levels): 
# LEVEL = str(item) 
    for j in range(24,384,24): 
     J = str(j) 
     FileList.append([]) 
     data.append([]) 
     for i in range(1,51,1): 
       data[count-1].append([]) 
       I = str(i) 
       fileName = '/Users/alexg/ECMWF_DATA/'+MODEL+'_'+LEVEL+'_u_'+I+'_FT0'+J+'_'+DATE+'.txt' 
       print fileName 
       FileList[count-1].append(fileName) 

(我知道代碼的格式不示範)

+0

,但你可以在另一個Python包你的腳本:

levels = raw_input("Enter Levels: ") 

與腳本,並使用'Popen'和'subprocess'中的''''進行輸入。 – user2085282 2014-09-22 15:57:36

回答

1

我認爲你正在尋找脫穎而出sys.argv你可以從csh多個值與添加sys.argv[1:]到您的源文件!在python我們稱之爲Terminology

所以改變這一行:如果你打開不用csh事情

import sys 
levels=sys.argv[1:] 
+0

看起來像它,謝謝! – agold2121 2014-09-22 16:00:28

+0

如果沒有提供cli參數,你可能想添加一個catch來使用'raw_input'。 – user2085282 2014-09-22 16:07:59

+0

不,你不需要'sys_argv'的'raw_input',我們在運行代碼之前傳遞值!和'levels'應該包含那些!如果使用'raw_input',你就不在'levels'中。 – Kasramvd 2014-09-22 16:13:56

相關問題