Wykonywanie pliku vbs z argumentami utworzonymi przez python
Chciałbym przekonwertować dziesiątki arkuszy Excela na pliki csv jednocześnie. Mam działający plik .vbs, który dokonuje konwersji i chciałbym wykonać ten plik .vbs na różnych arkuszach za pomocą kodu Pythona. Mam następujące 2 wersje kodu Pythona:
Wersja 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)
Wersja 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])
Nie ma znaczenia, który próbuję, otrzymuję ten sam komunikat o błędzie:
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
Ostatni wiersz komunikatu o błędzie oznacza, że nie jest prawidłowym programem Win32.
Co próbowałem dotychczas:
Jeśli uruchomię plik .vbs z wiersza polecenia z odpowiednimi argumentami (arkusz, nazwa pliku .xls i nazwa pliku .csv), to działa poprawnie.Jeśli wypiszę komendy generowane przez Pythona i skopiuję je do wiersza poleceń, działają poprawnie.Próbowałem wszystkich kombinacji 'i' w różnych ścieżkach i nic nie było lepsze.Próbowałem uruchomić programy, zastępując argumenty sys.argv [i] konkretnymi argumentami, a następnie wykonać plik .py z wiersza poleceń. Otrzymuję ten sam komunikat o błędzie.Mam nadzieję, że niektórzy z was mogą mi pomóc. Wielkie dzięki!