如何使用子进程执行 'ssconvert' 命令

How to execute 'ssconvert' command using subprocess

我要执行以下命令:

ssconvert /data/sam.xls,/data/test.csv

我试过:

 p = subprocess.Popen(["ssconvert", '/data/sam.xls','/data/test.csv'], stdout=subprocess.PIPE,shell=True)
   out = p.communicate()
   print"output", out

但它不起作用。

我该如何解决这个问题?

正确的命令不是ssconvert /data/sam.xls,/data/test.csvIt should be:改为 ssconvert /data/sam.xls /data/test.csv(注意:space,而不是输入和输出文件名之间的逗号)。

如果您使用 shell=True,那么您应该将命令作为字符串传递。在这种情况下不需要使用 shell=True。如果 shell=False(默认),则每个命令行参数应作为单个列表项传递:

#!/usr/bin/env python
import subprocess

subprocess.check_call(['ssconvert', '/data/sam.xls', '/data/test.csv'])

Why subprocess.Popen doesn't work when args is sequence?

这是有效的

import subprocess
subprocess.call(["ssconvert","sample.xlsx","sample.csv"],cwd="pathtoyourfile") # pathtoyourfile must contain the xlsx and csv files