通过命令行通过Python脚本打开TOPCAT

时间:2013-11-26 16:48:47

标签: python subprocess

我正在尝试将程序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选项,它似乎没有做得更好。

2 个答案:

答案 0 :(得分: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'])

希望这足以帮助其他遇到此特定任务的人。

答案 1 :(得分:0)

如果其他人遇到此问题,则可能会对pystilts感兴趣。

https://github.com/njcuk9999/pystilts

edit:它是Topcat / STILTS的本地Python包装器。