gpt4 book ai didi

python - 使用 ia-wrapper 将后续项目上传到 archive.org 时,为什么过时的 header 值仍然存在?

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:50 27 4
gpt4 key购买 nike

我使用ia-wrapper大师在archive.org上镜像了一批EuroPython2014的视频。正如 #64 中所讨论的,先前上传的元数据会显示在后续上传中。

我浏览并手工编辑了 archive.org 界面中的描述(这只是一些视频),但我希望下次我镜像 session 时不会发生这种情况。我有一个解决方法(在调用上传时显式设置 header 。)我真的很想知道 header 字典仍然是从以前的调用中填充的。

当我运行这个时,item.py L579当调用 upload_file 时,没有在 kwargs 中传递 header 。 (我什至使用 pycharm 的调试器进行了单步调试)。

这到底是怎么回事?

如果您想尝试一下,下面的代码将对此进行演示。

pip install -e git+https://github.com/jjjake/ia-wrapper.git@9b7b951cfb0e9266f329c9fa5a2c468a92db75f7#egg=internetarchive-master

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
import internetarchive as ia
import os
from tempfile import NamedTemporaryFile


ACCESS_KEY = os.environ.get('IAS3_ACCESS_KEY')
SECRET_KEY = os.environ.get('IAS3_SECRET_KEY')

now = datetime.datetime.utcnow().strftime('%Y_%m_%d_%H%M%S')

item = ia.Item('test_upload_iawrapper_first_%s' % now)
item2 = ia.Item('test_upload_iawrapper_second_%s' % now)

def upload(item, metadata):
with NamedTemporaryFile() as fh:
fh.write('testing archive_uploader')
item.upload(fh.name,
metadata=metadata,
access_key=ACCESS_KEY,
secret_key=SECRET_KEY,
# adding headers={} is a workaround
)

upload(item,
metadata={
'collection': 'test_collection',
'description': 'not an empty description',
})

upload(item2,
metadata={
'collection': 'test_collection',
# you can also comment out description and get hte same result
'description': '',
})

print 'visit https://archive.org/details/{}'.format(item.identifier)
print 'visit https://archive.org/details/{}'.format(item2.identifier)

最佳答案

您遇到了 Python 中的“可变默认值”陷阱:"Least Astonishment" and the Mutable Default Argument

更改此:

def upload_file(self, body, headers={}, ...):

对此:

def upload_file(self, body, headers=None, ...):
if headers is None:
headers = {}

关于python - 使用 ia-wrapper 将后续项目上传到 archive.org 时,为什么过时的 header 值仍然存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25351440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com