subprocess.call不按计划行事

2024-04-20 03:05:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过下面的代码用python反复执行一个外部程序。。。在

3 javarun='java -classpath /home/jrm6u/code/weka_dir/weka.jar'
4 java1='java'
5 java2='-classpath'
6 java3='/home/jrm6u/code/weka_dir/weka.jar'
7 weka_args='weka.clusterers.DBScan'
8 db_type='weka.clusterers.forOPTICSAndDBScan.Databases.SequentialDatabase'
9 db_dist='weka.clusterers.forOPTICSAndDBScan.DataObjects.EuclidianDataObject'

。。。在

^{pr2}$

。。。在

^{3}$

其中eps和min分别为0.125和{}。在

在执行python代码时,我得到以下错误:

Usage: java [-options] class [args...]
       (to execute a class)
or  java [-options] -jar jarfile [args...]
       (to execute a jar file)
where options include:
-d32          use a 32-bit data model if available
-d64          use a 64-bit data model if available
-server       to select the "server" VM
              The default VM is server.

进一步输出。这与我在bashshell中输入java时得到的输出完全相同。这让我相信,不知怎么的,subprocess.call不是读每一个论点。是这样吗?我应该如何让它正确地计算这个命令?在

注意,这个命令可以手动正确地输入到shell中,但是使用这个脚本的动机是让它循环使用min和{}的值以及训练文件,这样我就可以自动执行这些命令了。在


Tags: to代码命令homeserverdirargscode
1条回答
网友
1楼 · 发布于 2024-04-20 03:05:17

我不认为它忽略了参数,但除非有必要,我会尽量避免Shell参数,有时它有奇怪的行为(与命令行解析相关,而不是python)。在

我对Java一无所知,但我敢打赌你给它的参数是错误的,这个输出错误告诉我们什么也没有(除了找到java并且它没有得到正确的参数,这并不意味着它没有得到任何参数)。在

尝试调试传递到的词典subprocess.call(即使使用简单的print或import pdb并调用pdb.set_trace()来获得上一行中的调试器),并检查带有这些参数的命令是否按预期工作。在

我知道这不是一个恰当的答案,但这是太长的评论线。在

相关问题 更多 >