2013-11-26 82 views
0

我正在嘗試將程序TOPCAT(具有非常驚人的繪圖功能)合併到我寫的python腳本中。問題是,當我撥打電話的程序它告訴我:通過命令行打開TOPCAT通過Python腳本

OSError: [Errno 2] No such file or directory 

下面是一些背景的問題:

1)我通常通過命令行打開topcat的方式是通過別名我已經創建:

alias topcat='java -jar /home/username/topcat/topcat-full.jar' 

2)如果我想開TOPCAT用一記文件(讓我們使用一個CSV文件,因爲這就是我想它的工作),我會鍵入此進入命令行:

topcat -f csv /home/username/path_to_csv_file/file.csv 

而且這也工作得很好。當我嘗試在我的python腳本中調用這些命令時出現問題。我已經嘗試了subprocess.call和os.system,並且由於某種原因他們似乎並不知道topcat別名的存在。即使做一個簡單的調用,比如:

import subprocess 
subprocess.call(['topcat']) 

不工作......不過,我可以得到topcat打開,如果我運行此:

import subprocess 
subprocess.call(['java','-jar','/home/username/topcat/topcat-full.jar']) 

這樣做的問題是,它只是打開該程序,並且不允許我告訴它要接收哪個文件以及它碰巧是什麼類型。

有人能告訴我我在這裏做錯了嗎?我也看過shell=True選項,它似乎沒有更好的。

回答

0

好的 - 所以我很激動,想通了。以前的工作是:

import subprocess 
subprocess.call(['java','-jar','/home/username/topcat/topcat-full.jar']) 

事實證明,它可以採取更多的命令行參數。這是最終得到了它打開了正確的逗號分隔文件通過命令行:

import subprocess 
subprocess.call(['java','-jar','/home/username/topcat/topcat-full.jar','-f','csv','/full/path/to/data.csv']) 

希望這是足夠的信息,以幫助誰碰到過這樣的特定任務的其他人。