Why am i getting ValueError: too many values to unpack -Python
Why am i getting ValueError: too many values to unpack -Python
以下代码抛出 ValueError:要解压的值太多
if remote_folder is not None:
for directory_name, files in os.walk(file_path):
for filename in files:
remote_folder.key = os.path.join(
remote_file_path,
directory_name,
filename)
file_size_uploaded = remote_folder.set_contents_from_filename( # noqa
os.path.join(directory_name, filename), replace=True)
return False if file_size_uploaded == 0 else True
此方法正在尝试将文件上传到 S3 存储桶
谁能解释为什么以及如何避免?
这个:
for directory_name, files in os.walk(file_path):
os.walk returns 3 元组,因此在尝试将 3 元组分配给 2 元组时会引发异常。
使用:
for root, dirs, files in os.walk(file_path):
os.walk
上的文档:https://docs.python.org/2/library/os.html#os.walk
根据 os.walk 的文档,它产生一个 3 元组。随着
for directory_name, files in os.walk(file_path):
您正在尝试将 3 元组解包为 2 个变量,因此有 "too many values to unpack"。您需要向该行添加第三个变量,然后您的代码应该 运行.
由于 os.walk returns 一个 3 元组并且您似乎对目录名没有任何用处,您可以代替原来的 for directory_name, files in os.walk(file_path):
,执行以下操作:
这个:
# This style makes it clear that you aren't using the
# second (dirnames) variable.
for directory_name, _, files in os.walk(file_path):
或:
# This slices the part that you need
for directory_name, files in os.walk(file_path)[::2]:
它更明确地表明您 根本没有使用 目录名。
以下代码抛出 ValueError:要解压的值太多
if remote_folder is not None:
for directory_name, files in os.walk(file_path):
for filename in files:
remote_folder.key = os.path.join(
remote_file_path,
directory_name,
filename)
file_size_uploaded = remote_folder.set_contents_from_filename( # noqa
os.path.join(directory_name, filename), replace=True)
return False if file_size_uploaded == 0 else True
此方法正在尝试将文件上传到 S3 存储桶
谁能解释为什么以及如何避免?
这个:
for directory_name, files in os.walk(file_path):
os.walk returns 3 元组,因此在尝试将 3 元组分配给 2 元组时会引发异常。
使用:
for root, dirs, files in os.walk(file_path):
os.walk
上的文档:https://docs.python.org/2/library/os.html#os.walk
根据 os.walk 的文档,它产生一个 3 元组。随着
for directory_name, files in os.walk(file_path):
您正在尝试将 3 元组解包为 2 个变量,因此有 "too many values to unpack"。您需要向该行添加第三个变量,然后您的代码应该 运行.
由于 os.walk returns 一个 3 元组并且您似乎对目录名没有任何用处,您可以代替原来的 for directory_name, files in os.walk(file_path):
,执行以下操作:
这个:
# This style makes it clear that you aren't using the
# second (dirnames) variable.
for directory_name, _, files in os.walk(file_path):
或:
# This slices the part that you need
for directory_name, files in os.walk(file_path)[::2]:
它更明确地表明您 根本没有使用 目录名。