在 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)

如果变量不包含扩展名