我希望能够批量将数十个Excel表格转换为CSV文件。我已经有一个可行的 .vbs 文件可以完成转换,现在我想通过 Python 代码来执行这个 .vbs 文件以便对不同的表格进行转换。以下是我编写的两个 Python 代码版本:
版本1:
无论我尝试哪个,都会收到相同的错误消息:
错误信息的最后一行大概意思是它不是一个有效的Win32程序。
我已经尝试过:
- 如果我使用正确的参数(sheet,.xls文件的名称和.csv文件的名称)从命令提示符中运行.vbs文件,则可以正常工作。 - 如果我打印出Python生成的命令并将它们复制到命令提示符中,则可以正常工作。 - 我尝试了在不同路径中使用'\'和'\'的所有组合,但没有任何改善。 - 我尝试用特定的参数替换sys.argv [i]参数,然后从命令提示符中执行.py文件。我收到相同的错误消息。
希望有人能帮助我。非常感谢!
版本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)
版本 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])
无论我尝试哪个,都会收到相同的错误消息:
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
错误信息的最后一行大概意思是它不是一个有效的Win32程序。
我已经尝试过:
- 如果我使用正确的参数(sheet,.xls文件的名称和.csv文件的名称)从命令提示符中运行.vbs文件,则可以正常工作。 - 如果我打印出Python生成的命令并将它们复制到命令提示符中,则可以正常工作。 - 我尝试了在不同路径中使用'\'和'\'的所有组合,但没有任何改善。 - 我尝试用特定的参数替换sys.argv [i]参数,然后从命令提示符中执行.py文件。我收到相同的错误消息。
希望有人能帮助我。非常感谢!
os.system
吗?此外,你可以查看这里:https://dev59.com/-m035IYBdhLWcg3wPdcS,可能会对你有所帮助。 - user2725093