Traceback (most recent call last): File "C:\Users\qijunqing\Desktop\CC02\sv2doc3.py", line 38, in <module> sv_to_docx(folder_path) File "C:\Users\qijunqing\Desktop\CC02\sv2doc3.py", line 20, in sv_to_docx section = docx.Sections[0] File "C:\Users\qijunqing\PycharmProjects\pythonProject\venv\lib\site-packages\win32com\client\dynamic.py", line 638, in __getattr__ raise AttributeError("%s.%s" % (self._username_, attr)) AttributeError: Add.Sections
时间: 2023-06-30 22:19:32 浏览: 183
出现该错误的原因是因为 `Add()` 方法返回的是一个 `Document` 对象,而不是一个 `Application` 对象,因此无法通过 `Sections` 属性来访问页眉和页脚。
可以将 `Add()` 方法返回的 `Document` 对象存储在一个变量中,然后使用该变量来访问页眉和页脚。修改后的代码如下:
```python
import os
import win32com.client as win32
def sv_to_docx(folder_path):
# 创建Word应用程序
word = win32.Dispatch('Word.Application')
# 遍历文件夹下的所有文件和子文件夹
for root, dirs, files in os.walk(folder_path):
for file in files:
# 判断文件是否为.sv文件
if file.endswith('.sv'):
sv_path = os.path.join(root, file)
# 读取.sv文件内容
with open(sv_path, 'r') as f:
sv_content = f.readlines()
# 创建.docx文件
docx_path = os.path.join(root, file[:-3] + 'docx')
docx = word.Documents.Add()
# 获取第一个Section对象
section = docx.Sections.Item(1)
# 获取页眉Range对象
header_range = section.Headers(win32.constants.wdHeaderFooterPrimary).Range
header_range.Text = file[:-3]
# 将.sv内容写入.docx文件
line_num = 0
for line in sv_content:
line_num += 1
docx.Content.Paragraphs.Add().Range.Text = str(line_num) + '. ' + line.strip()
if line_num % 50 == 0:
docx.Content.InsertBreak(win32.constants.wdPageBreak)
# 保存.docx文件
docx.SaveAs(docx_path)
docx.Close()
# 退出Word应用程序
word.Quit()
```
再次运行代码,应该就不会出现该错误了。
阅读全文