python中用户定义的命令行参数

时间:2011-06-29 15:31:24

标签: python command-line

我的python程序遇到了几个问题。基本上,我希望能够将多个图像的路径文件发送到命令提示符(用户定义了多少图像,因此只需将直接文件路径作为args,如下所示,不能达到我想要的效果)。我的代码目前看起来像这样:

os.system("java -jar C:\\Inetpub\\ftproot\\JPivSource\\jpivc.jar image_00000001.jpg image_00000002.jpg image_00000003.jpg")

还有更多的图像,所以当然,写出image_00000004,5,6等几乎没有效率,完全取决于每次都有相同数量的图像,而没有。 (jpivc.jar是在执行此代码时打开的程序,并导入图像并执行操作 - 这一点工作正常)。理想情况下,代码类似于:

for i in range(1, NumberOfImages):
    os.system("java -jar C:\\Inetpub\\ftproot\\JPivSource\\jpivc.jar image_0000000" + i + ".jpg")

除此之外,你知道,每次我增加时都不打开jpivc.jar,我只是用上面的方法来展示我想要的那种东西。不幸的是,这不起作用,因为它只将“”中的第一部分发送到命令行,如果它没有给出错误信息 - 我的第一个问题是,有没有办法让这样做我想要的做?我对python缺乏经验,所以请尽量使用技术细节。

我的第二个问题是 - 有没有办法关闭命令提示符或jpivc.jar?我已经尝试了所有我能想到的预定义函数 - os.system("tskill cmd.exe")和variatons,os.kill()(尽管我使用的是2.5,所以我并不感到惊讶,这不起作用),{{ 1}}和Popen.kill(),甚至尝试使用Popen.terminate()编写自己的kill函数。没有任何作用 - 直到cmd.exe或jpivc.jar手动关闭,然后我的其余代码中的所有内容都能正常工作。我认为Python会暂停,直到命令行关闭 - 当我想从Python关闭命令行时,这没有用!总结一下;为什么会这样停止,我该如何解决?

如果需要,可以提供我代码中的更多摘录 - 我在Windows XP Professional上使用Python 2.5.4。不要让我从jpivc.jar提供任何东西 - 我甚至不会假装理解一点点Java。

提前致谢,

戴夫

1 个答案:

答案 0 :(得分:1)

我相信你正在寻找像这样的东西

fileNames=""
for i in range(1, NumberOfImages):
    fileNames += "image_0000000%d.jpg "%i

os.system( "java -jar C:\\Inetpub\\ftproot\\JPivSource\\jpivc.jar %s"%fileNames )

将文件从script.py重命名为script.pyw,以避免打开命令提示符。

jpivc.jar将保持打开状态,直到您手动关闭它或程序员在完成处理所有文件后更改其代码以退出。

[编辑]

我发现这是为了启动和终止进程

pidId = os.spawnl(os.P_NOWAIT, "\\windows\\notepad.exe") 
import win32api
win32api.TerminateProcess(pidId ,0)