我尝试使用以下代码将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' is not recognized as an internal or external command,operable program or batch file.".我在路径周围使用引号,我认为这会解决问题,但显然不是,它interesting to note that if I use only the first path with the same structure:
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打开得很好,所以我不认为问题出在路径的编写方式上,但是这里肯定有一些奇怪的事情,有人能理解我是如何做到这一点的吗?
我已经尝试使用进程模块而不是os.system,我尝试使用不同类型的引号,我尝试打印cmd并在终端上自己运行命令(它工作,这使得它似乎更奇怪,它现在不工作.).我已经尝试了我能想到的一切.
1条答案
按热度按时间8i9zcol21#
您的脚本将生成以下命令
字符串
这应该给你给予同样的错误,即使在终端中手动运行(我的猜测是,你运行的命令没有前面的
cmd /c
,这就是为什么你认为它工作)。主要的问题在于
cmd /c
,在cmd /?
提供的帮助中有解释:型
因此,如果不需要,可以删除
cmd /c
,或者将整个命令(3个字符串的序列)包含在字符串中:型
不要担心它看起来很奇怪,cmd会正确地解析它。
此外,您的命令似乎没有做到您声称的那样-“将xlsb文件转换为xlsx”。
excelcnv.exe
没有很好的文档记录,但似乎你缺少了一个-oice
标志,所以也许可以尝试以下命令:型
要在Python中构建此命令,最好按照@picobit的建议使用
pathlib
,特别是对于更复杂的脚本,但在这里我将提供一个类似于您的代码,添加f
和r
字符串以提高可读性:型