lambda通过列表中的元素循环函数
如何调整此代码以使函数循环通过列表models_2
?如果我有函数使用model
有效,如果我更改为“型号_2”,它会给我这个错误:
attributeError:'float'对象没有属性'seek'
这是我的数据框架,从具有所有单元格式的Excel设置为“文本”。
MOD1 MOD2 MOD3 MOD4
0 File1.pdf File3.pdf File1.pdf File3.pdf
1 File2.pdf NaN File2.pdf File3.pdf
2 File3.pdf NaN NaN NaN
models = ['MOD1']
models_2 = ['MOD1', 'MOD2']
def merge_pdf(models):
merger = PdfFileMerger()
for name in models:
for index, row in df.iterrows():
merger.append(row[name])
merger.write(f"Order #XXXXXXX ({name}) Production Package - Rev.0.pdf")
merger.close()
merge_pdf(models)
完整错误消息:
PdfReadWarning: Xref table not zero-indexed. ID numbers for objects will be corrected. [_reader.py:1065]
Traceback (most recent call last):
File "Z:\PyCharm\Excel_Reader\Excel_Reader.py", line 30, in <module>
merge_pdf(models)
File "Z:\PyCharm\Excel_Reader\Excel_Reader.py", line 27, in merge_pdf
merger.append(row[name])
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\merger.py", line 227, in append
self.merge(len(self.pages), fileobj, bookmark, pages, import_bookmarks)
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\merger.py", line 149, in merge
pdfr = PdfFileReader(
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\_reader.py", line 239, in __init__
self.read(stream)
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\_reader.py", line 911, in read
stream.seek(-1, 2)
AttributeError: 'float' object has no attribute 'seek'
How could I adjust this code to have the function loop through the list models_2
? If I have the function use models
it works, if I change to `models_2' it give me this error:
AttributeError: 'float' object has no attribute 'seek'
This is my dataframe, from an excel with all cell format set to "text".
MOD1 MOD2 MOD3 MOD4
0 File1.pdf File3.pdf File1.pdf File3.pdf
1 File2.pdf NaN File2.pdf File3.pdf
2 File3.pdf NaN NaN NaN
models = ['MOD1']
models_2 = ['MOD1', 'MOD2']
def merge_pdf(models):
merger = PdfFileMerger()
for name in models:
for index, row in df.iterrows():
merger.append(row[name])
merger.write(f"Order #XXXXXXX ({name}) Production Package - Rev.0.pdf")
merger.close()
merge_pdf(models)
The full error message:
PdfReadWarning: Xref table not zero-indexed. ID numbers for objects will be corrected. [_reader.py:1065]
Traceback (most recent call last):
File "Z:\PyCharm\Excel_Reader\Excel_Reader.py", line 30, in <module>
merge_pdf(models)
File "Z:\PyCharm\Excel_Reader\Excel_Reader.py", line 27, in merge_pdf
merger.append(row[name])
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\merger.py", line 227, in append
self.merge(len(self.pages), fileobj, bookmark, pages, import_bookmarks)
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\merger.py", line 149, in merge
pdfr = PdfFileReader(
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\_reader.py", line 239, in __init__
self.read(stream)
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\PyPDF2\_reader.py", line 911, in read
stream.seek(-1, 2)
AttributeError: 'float' object has no attribute 'seek'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的代码失败了,因为列“ mod2”包含
nan
值,该值 float 。处理此操作的方式取决于您想对那些nan
值做什么。您可以通过运行以下代码来验证这一点:
这将打印以下内容:
如果您只想包含具有字符串值的单元格,则可以在将其附加到
合并
之前添加类型检查。对象,像这样:Your code is failing because the column 'MOD2' contains
NaN
values, which are of typefloat
. The way you handle this depends on what you want to do with thoseNaN
values.You can verify that by running the following code:
This will print the following:
If you know you only want to include the cells with string values, you can add a type check prior to appending it to your
merger
object, like so: