我目前正在使用以下代码打开word文档(然后保存它,但这与打开文件无关):
word=win32.Dispatch('Word.Application')
try:
doc = word.Documents.Open('S:\problem\file.docx')
except Exception as e:
print(e)
(-2147352567, 'Exception occurred.', (0, 'Microsoft Word', 'Sorry, we
couldn’t find your file. Is it possible it was moved, renamed or
deleted?\r (S:\\problem\\file.docx)',
'wdmain11.chm', 24654, -2146823114), None)
"问题"目录是win32客户端无法识别的唯一目录。我已经多次将其重命名为单个字母,以查看命名是否由于某种原因而成为问题,但这似乎不是问题。
docx function- docx.Document也可识别文件路径,并且它能够读取目录中的文件。以下是docx代码段的相同代码和结果:
Document('S://problem/file.docx')
<docx.document.Document at 0x83d3c18>
答案 0 :(得分:0)
在 Python 字符串中, bkslash ( “\” )是具有特殊含义的字符之一:它用于创建转义序列(特殊的 char s)以及它后面的char(来自 C )。以下是[Python 3]: String and Bytes literals所述的内容:
反斜杠(
\
)字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引号字符。
在你的字符串中,你有“\ p”(确定)和“\ f”,它被解释为< strong>单 char (表单Feed - 新页面),使您的路径无效。
为了解决这个问题,请:
作为一般规则,为了确保字符串符合您的想法,可以:
示例强>:
>>> import sys >>> sys.version '3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)]' >>> >>> s0 = 'S:\problem\file.docx' >>> s1 = 'S:\\problem\\file.docx' >>> s2 = r'S:\problem\file.docx' >>> >>> len(s0), len(s1), len(s2) (19, 20, 20) >>> >>> s0 == s1, s1 == s2 (False, True) >>> >>> repr(s0), repr(s1), repr(s2) ("'S:\\\\problem\\x0cile.docx'", "'S:\\\\problem\\\\file.docx'", "'S:\\\\problem\\\\file.docx'")