2015-11-25 4 views
0

Я хочу, чтобы выполнить следующую команду
Как выполнить команду ssconvert с использованием подпроцесс в Python

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 

но не работает .. Как я могу решить эту проблему? спасибо)):

+0

'р = subprocess.Popen (["ssconvert", '/data/sam.xls,/data/test.csv'], stdout = subprocess.PIPE, shell = True) '? –

+0

Я получаю сообщение об ошибке Aborted (core dumped) –

ответ

1

Это работает

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

Правильная команда не ssconvert /data/sam.xls,/data/test.csv. It 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?

Смежные вопросы