【问题标题】:How to execute 'ssconvert' command using subprocess如何使用子进程执行“ssconvert”命令
【发布时间】:2015-11-25 07:02:36
【问题描述】:

我要执行以下命令:

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

但它不起作用。

我该如何解决这个问题?

【问题讨论】:

  • p = subprocess.Popen(["ssconvert", '/data/sam.xls,/data/test.csv'], stdout=subprocess.PIPE,shell=True)?
  • 我收到错误调用 Aborted(核心转储)

标签: python shell subprocess ssconvert


【解决方案1】:

这是可行的

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

【讨论】:

    【解决方案2】:

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

    如果您使用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?

    【讨论】:

      最近更新 更多