Ejecutando un archivo vbs con argumentos creados por python
Me gustaría convertir docenas de hojas de Excel a archivos CSV a la vez. Tengo un archivo .vbs en funcionamiento que realiza la conversión, y me gustaría ejecutar este archivo .vbs en las diferentes hojas con la ayuda de un código de Python. Tengo las siguientes 2 versiones del código de python:
Versión 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)
Versión 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])
No importa, lo que intento, me sale el mismo mensaje de error:
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
La última línea del mensaje de error significa aproximadamente que no es un programa Win32 válido.
Lo que he intentado hasta ahora:
Si ejecuto el archivo .vbs desde el símbolo del sistema con los argumentos correctos (hoja, nombre del archivo .xls y nombre del archivo .csv), entonces funciona bien.Si imprimo los comandos que genera Python y los copio en el símbolo del sistema, funcionan bien.Probé todas las combinaciones de '\' y '\' dentro de los diferentes caminos, y nada mejoró.Intenté ejecutar los programas reemplazando los argumentos sys.argv [i] con argumentos específicos y luego ejecuté el archivo .py desde el símbolo del sistema. Me sale el mismo mensaje de error.Espero que alguno de ustedes pueda ayudarme. ¡Muchas gracias!