在 reportlab 中保存变量文件名
saving a variable filename in reportlab
我的代码一直收到错误消息“没有字符串 .pdf 的属性”。它用作静态文件名,但不用作变量。我已经阅读了关于打开文件名的其他示例,但其中 none 是内联的,就像 reportlab 需要的那样。
testid = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
basename = str("cert")
filename = "_".join([basename, testid])
print filename
canvas = canvas.Canvas(filename.pdf, pagesize=letter)
这是一个在最后一行失败的工作示例,但应该可以说明问题:
#!python2
#coding=utf-8
import datetime
testid = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
basename = str("cert")
filename = "_".join([basename, testid])
print filename
print "filename.pdf"
print filename.pdf
输出:
cert_170508_152300
filename.pdf
Traceback (most recent call last):
File "test.py", line 11, in <module>
print filename.pdf
AttributeError: 'str' object has no attribute 'pdf'
您正在传递一个不存在的对象(* 作为参数,其中需要字符串。
(* 实际上,由于文件名存在(一个字符串),它假定您正在尝试访问其不存在的 attribute(就像错误所说的那样)。
这应该有效:
canvas = canvas.Canvas(filename, pagesize=letter)
这会附加 .pdf 后缀:
canvas = canvas.Canvas(filename + '.pdf', pagesize=letter)
您应该将变量 filename
与扩展名 .pdf
结合起来
canvas = canvas.Canvas(filename+'.pdf', pagesize=letter)
如果变量不包含扩展名
我的代码一直收到错误消息“没有字符串 .pdf 的属性”。它用作静态文件名,但不用作变量。我已经阅读了关于打开文件名的其他示例,但其中 none 是内联的,就像 reportlab 需要的那样。
testid = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
basename = str("cert")
filename = "_".join([basename, testid])
print filename
canvas = canvas.Canvas(filename.pdf, pagesize=letter)
这是一个在最后一行失败的工作示例,但应该可以说明问题:
#!python2
#coding=utf-8
import datetime
testid = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
basename = str("cert")
filename = "_".join([basename, testid])
print filename
print "filename.pdf"
print filename.pdf
输出:
cert_170508_152300
filename.pdf
Traceback (most recent call last):
File "test.py", line 11, in <module>
print filename.pdf
AttributeError: 'str' object has no attribute 'pdf'
您正在传递一个不存在的对象(* 作为参数,其中需要字符串。
(* 实际上,由于文件名存在(一个字符串),它假定您正在尝试访问其不存在的 attribute(就像错误所说的那样)。
这应该有效:
canvas = canvas.Canvas(filename, pagesize=letter)
这会附加 .pdf 后缀:
canvas = canvas.Canvas(filename + '.pdf', pagesize=letter)
您应该将变量 filename
与扩展名 .pdf
canvas = canvas.Canvas(filename+'.pdf', pagesize=letter)
如果变量不包含扩展名