参数中包含空白的Python子进程调用在Windows上不起作用

2024-10-07 00:28:58 发布

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

我正在运行一个java命令,它接受类路径和其他有空白的文件位置。窗户好像不喜欢。

我让程序从C:\ program Files\Splunk运行,它有一个空格

这是我的命令

c1 = os.path.join(appdir, "bin", "apache-flume-1.3.1-bin", "lib", "*")
c2 = os.path.join(appdir, "bin", "apache-flume-1.3.1-bin", "lib", "flume-ng-node-1.3.1.jar")
c3 = os.path.join(appdir, "bin", "dtFlume.jar")

classpath = c1 + os.pathsep + c2 + os.pathsep + c3
log4j = os.path.join(appdir,"bin", "apache-flume-1.3.1-bin", "conf", "log4j.properties")
flumeconf = os.path.join(appdir,"bin","flume-conf.properties");

变体1-不起作用

cmdline = "java  -Xmx20m -Dlog4j.configuration=file:" + log4j + " -cp " + classpath + " org.apache.flume.node.Application -f " + flumeconf + " -n agent1"


try:
    p = subprocess.Popen("%s" %(cmdline),shell=True,stdout=subprocess.PIPE)

变化2-不起作用

cmdline_1 = "java  -Xmx20m -Dlog4j.configuration=file:"
cmdline_2 = log4j 
cmdline_3 = " -cp " 
cmdline_4 = classpath
cmdline_5 = " org.apache.flume.node.Application -f " 
cmdline_6 = flumeconf
cmdline_7 = " -n agent1"


try:
    p = subprocess.Popen('""%s" "%s" "%s" "%s" "%s" "%s" "%s""' %(cmdline_1,cmdline_2,cmdline_3,cmdline_4,cmdline_5,cmdline_6,cmdline_7),shell=True,stdout=subprocess.PIPE)

变化3-不起作用

cmdline_1 = "java  -Xmx20m -Dlog4j.configuration=file:"
cmdline_2 = log4j 
cmdline_3 = " -cp " 
cmdline_4 = classpath
cmdline_5 = " org.apache.flume.node.Application -f " 
cmdline_6 = flumeconf
cmdline_7 = " -n agent1"


try:
    p = subprocess.Popen("%s %s %s %s %s %s %s" %(cmdline_1,cmdline_2,cmdline_3,cmdline_4,cmdline_5,cmdline_6,cmdline_7),shell=True,stdout=subprocess.PIPE)

每次它给我相同/相似的错误,找不到主类,并且路径在C:\程序中被截断

“C:\程序文件\Splunk\etc\apps\APM_dynatrace\bin\runFlume.py”“错误:找不到或加载主类文件\Splunk\etc\apps\APM_dynatrace\bin\apache-flume-1.3.1-bin\conf\log4j.properties


Tags: 文件pathnodebinosapachejavasubprocess