os.system() 文件路径中的空格 - 'C:\Program' 无法识别

问题描述 投票:0回答:1

我正在尝试使用以下代码将 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 并自己在终端上运行命令(并且它有效,这使得它看起来更加奇怪)现在不工作...)。我已经尝试了所有我能想到的...

python excel path escaping os.system
1个回答
0
投票

您遇到的问题与 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)
© www.soinside.com 2019 - 2024. All rights reserved.