Django 遇到的错误:expected str, bytes or object, not _io.TextIOWrapper

时间:2025-03-22 17:44:25

1、由于在开发一个导出pdf的功能,在之前已经写过一篇所遇到的错误记录文档,文章链接如下:/u012561176/article/details/83655247

但是下载出来的pdf有样式问题,即没加载进去样式文件,pdfkit有提供一个from_file的方法,可以加载多个样式和一个样式,即如下简单的代码:

# 单个 CSS 文件
css = ''
pdfkit.from_file('', options=options, css=css)

# Multiple CSS files
css = ['', '']
pdfkit.from_file('', options=options, css=css)

2、不过如果你写多了一点代码,或者写错了就会出现不同的错误,而我遇到的错误是expected str, bytes or object, not _io.TextIOWrapper,翻译过来的含义是:期望的STR、字节或OS.路径型对象,而不是_io.TextIOWrapper,出现这个错误的代码如下:

css = ['', '']
    with open(path + id + '.html', encoding='utf-8') as f:
        pdfkit.from_file(f, path + id + '.pdf', configuration=config, options=options, css=css)

这里,我通过打开一个html文件,在根据打开的这个html文件来生成pdf,如果没有加css属性倒是可以导出pdf的,这是不是很郁闷,加了就报expected str, bytes or object, not _io.TextIOWrapper错误,最后终于知道什么情况了,示例代码写得很清楚了,而且报错信息也很清楚,就是一个文件打开来只读时候的类型,css属性这样指定就不是那个方法所需要的类型了。

3、修改代码如下即可,直接把html的页面转换成pdf便不会报错了:

css = ['', '']
pdfkit.from_file(path + id + '.html', path + id + '.pdf', configuration=config, options=options, css=css)

以上内容仅供大家学习参考,谢谢!