Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python win32com Powerpoint无法处理名称中的空格_Python_Win32com - Fatal编程技术网

Python win32com Powerpoint无法处理名称中的空格

Python win32com Powerpoint无法处理名称中的空格,python,win32com,Python,Win32com,我的一个项目需要通过python以只读方式打开各种Microsoft Office文档。虽然win32com的Excel和Word功能从未遇到过包含空格的文档的问题,但win32com PowerPoint不允许这样做 from win32com.client import Dispatch Application = Dispatch("PowerPoint.Application") Application.Visible = True Test = Application.Presenta

我的一个项目需要通过python以只读方式打开各种Microsoft Office文档。虽然win32com的Excel和Word功能从未遇到过包含空格的文档的问题,但win32com PowerPoint不允许这样做

from win32com.client import Dispatch
Application = Dispatch("PowerPoint.Application")
Application.Visible = True
Test = Application.Presentations.Open("C:/Users/MYUSERNAME/Desktop/The Test.pptx", ReadOnly=True)
产生错误:

com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024894), None)
我目前的解决方案是重命名文件,用下划线替换空格,然后在文件打开后重新命名。但是,这要求打开文档时没有标题

from win32com.client import Dispatch
import os
Application = Dispatch("PowerPoint.Application")
Application.Visible = True
Filename = 'The Test.pptx'
os.rename("C:/Users/MYUSERNAME/Desktop/" + Filename, "C:/Users/MYUSERNAME/Desktop/" + Filename.replace(" ","_"))
Test = Application.Presentations.Open("C:/Users/MYUSERNAME/Desktop/" + Filename.replace(" ","_"), ReadOnly=True, Untitled=True)
os.rename("C:/Users/MYUSERNAME/Desktop/" + Filename.replace(" ","_"), "C:/Users/MYUSERNAME/Desktop/" + Filename)

有更好的方法吗?

使用反斜杠应该可以:

from win32com.client import Dispatch

def openfile():
    Application = Dispatch("PowerPoint.Application")
    Application.Visible = True
    Test = Application.Presentations.Open(r"C:\transfer\hello world.pptx", ReadOnly=True)

if __name__ == "__main__":
    openfile()

我猜如果字符串前面没有“r”,就会出现问题。“r”将告诉python将给定字符串视为原始字符串

如果我尝试以下方法,它对我有效:

from win32com.client import Dispatch
Application = Dispatch("PowerPoint.Application")
Application.Visible = True
Test = Application.Presentations.Open(r"C:\UsersMYUSERNAME\Desktop\The Test.pptx", ReadOnly=True)

您使用的是哪个版本的Python?正斜杠和空格在Python 2.7.12中运行良好