我想将约250张图像及其文件名插入docx文件。
我的test.py
文件:
from pathlib import Path
import docx
from docx.shared import Cm
filepath = r"C:\Users\Admin\Desktop\img"
document = docx.Document()
for file in Path(filepath).iterdir():
# paragraph = document.add_paragraph(Path(file).resolve().stem)
document.add_picture(Path(file).absolute(), width=Cm(15.0))
document.save('test.docx')
调试后,出现此错误:
Exception has occurred: AttributeError
'WindowsPath' object has no attribute 'seek'
File "C:\Users\Admin\Desktop\test.py", line 10, in <module>
document.add_picture(Path(file).absolute(), width=Cm(15.0))
如何避免此错误?
答案 0 :(得分:1)
您需要将文件对象转换为 Path 方法的字符串类型。
for file in Path(filepath).iterdir():
# Paragraph = document.add_paragraph(Path(file).resolve().stem)
document.add_picture(Path(str(file)).absolute(), width=Cm(15.0))
答案 1 :(得分:1)
简单地将路径对象转换为字符串:
for file in Path(filepath).iterdir():
path_str = str(Path(file).absolute())
document.add_picture(path_str, width=Cm(15.0))
使用 WindowsPath 对象作为输入的问题似乎是 document.add_picture 不知道如何使用它来打开文件。 seek 是一个文件对象的方法。
答案 2 :(得分:0)
您是否尝试过使用io.FileIO?
from io import FileIO
from pathlib import Path
import docx
from docx.shared import Cm
filepath = r"C:\Users\Admin\Desktop\img"
document = docx.Document()
for file in Path(filepath).iterdir():
# paragraph = document.add_paragraph(Path(file).resolve().stem)
document.add_picture(FileIO(Path(file).absolute(), "rb"), width=Cm(15.0))
document.save('test.docx')
在将文件路径传递到PdfFileReader时,使用PyPDF2遇到了相同的错误。当我像这样FileIO
将PDF文件包装在FileIO(pdf_path, "rb")
中时,错误消失了,我能够成功处理该文件。
答案 3 :(得分:0)
在我的情况下,将路径中的'/'更改为'/'可以解决问题。例如:“ C:/ Users / Admin / Desktop / img” (我相信这可能是将其包装在FileIO中的功能,但是在我的情况下,这样做不起作用)
您也可以使用
os.path.join(mydir, myfile)
所述