Executando um arquivo vbs com argumentos criados pelo python
Eu gostaria de converter dezenas de planilhas do excel em arquivos csv de uma só vez. Eu tenho um arquivo .vbs de trabalho que faz a conversão, e gostaria de executar este arquivo .vbs nas diferentes folhas com a ajuda de um código python. Eu tenho as seguintes 2 versões do código python:
Versão 1:
import os
import sys
import subprocess
FolderName=sys.argv[1]
FileList=os.listdir(FolderName)
NewList=[]
for i in FileList:
NewItem=i.split('.xls')
NewXls=FolderName+"\\"+NewItem[0]+".xlsx "
NewCsv=FolderName+"\\"+NewItem[0]+".csv"
NewCommand="C:\\Users\\user\\XlsToCsv.vbs "+sys.argv[2]+" "+NewXls+NewCsv
subprocess.call(NewCommand)
Versão 2:
import os
import sys
import subprocess
def main(directory,extension,sheet):
for filename in os.listdir(directory):
if filename.endswith(extension):
path = os.path.join(directory, filename)
base = os.path.join(directory, filename[:len(filename)-len(extension)])
print base
new_xls = base + extension
new_csv = base + '.csv'
subprocess.call(['C:\\Users\\user\\XlsToCsv.vbs', sheet, new_xls, new_csv])
main(sys.argv[1],sys.argv[2],sys.argv[3])
Não importa, o que eu tento, recebo a mesma mensagem de erro:
Traceback (most recent call last):
File "C:/Users/user/Desktop/Work/XlsDir.py", line 16, in <module>
subprocess.call(NewCommand)
File "C:\Python27\lib\subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
startupinfo)
WindowsError: [Error 193] %1 er ikke et gyldigt Win32-program
A última linha da mensagem de erro significa aproximadamente que não é um programa Win32 válido.
O que eu tentei até agora:
Se eu executar o arquivo .vbs no prompt de comando com os argumentos corretos (folha, nome do arquivo .xls e nome do arquivo .csv), ele funcionará bem.Se eu imprimir os comandos que o python gera e copiá-los no prompt de comando, eles funcionam bem.Eu tentei todas as combinações de '\' e '\' nos diferentes caminhos, e nada melhorou.Eu tentei executar os programas com a substituição dos argumentos sys.argv [i] por argumentos específicos e, em seguida, executar o arquivo .py no prompt de comando. Recebo a mesma mensagem de erro.Espero que alguns de vocês possam me ajudar. Muito obrigado!