我正在尝试使用以下代码将 xlsb 文件转换为 xlsx:
import os
EXCELCNV_PATH = "\"C:\\Program Files\\Microsoft Office\\root\\Office16\\EXCELCNV.EXE\""
FILE_PATH = "\"C:\\Users\\Tomas\\Desktop\\fix_excelcnv\\Book1"
cmd = "cmd /c " + EXCELCNV_PATH
cmd = cmd + " " + FILE_PATH + ".xlsb\" " + FILE_PATH +".xlsx\""
print(cmd)
os.system(cmd)
我收到此错误消息“'C:\Program' 未被识别为内部或外部命令, 可操作的程序或批处理文件。”。我在路径周围使用引号,我认为这可以解决问题,但显然不是,有趣的是,如果我只使用具有相同结构的第一个路径:
import os
EXCELCNV_PATH = "\"C:\\Program Files\\Microsoft Office\\root\\Office16\\EXCEL.EXE\""
FILE_PATH = "\"C:\\Users\\Tomas\\Desktop\\fix_excelcnv\\Book1"
cmd = "cmd /c " + EXCELCNV_PATH
#cmd = cmd + " " + FILE_PATH + ".xlsb\" " + FILE_PATH +".xlsx\""
print(cmd)
os.system(cmd)
excel打开得很好,所以我不认为问题出在路径的编写方式上,但这里肯定发生了一些奇怪的事情,有人能理解我如何让这个工作吗?
我已经尝试使用 process 模块而不是 os.system,我尝试使用不同类型的引号,我尝试打印 cmd 并自己在终端上运行命令(并且它有效,这使得它看起来更加奇怪)现在不工作...)。我已经尝试了所有我能想到的...
您遇到的问题与 cmd 如何处理文件路径中的空格有关。当从 os.system 或 subprocess 执行命令时,需要以不同的方式处理带空格的文件路径。 试试这个:
import os
EXCELCNV_PATH = "C:\\Program Files\\Microsoft Office\\root\\Office16\\EXCELCNV.EXE"
FILE_PATH = "C:\\Users\\Tomas\\Desktop\\fix_excelcnv\\Book1"
cmd = 'cmd /c "{}" "{}.xlsb" "{}.xlsx"'.format(EXCELCNV_PATH, FILE_PATH, FILE_PATH)
print(cmd)
os.system(cmd)