Python 解压缩不同文件路径的os.WACK不一致错误
基本Python问题 我正在玩os.walk功能,看到不一致的错误消息。 样本o/p如下:Python 解压缩不同文件路径的os.WACK不一致错误,python,python-3.x,python-3.6,Python,Python 3.x,Python 3.6,基本Python问题 我正在玩os.walk功能,看到不一致的错误消息。 样本o/p如下: Python 3.6.2 (default, Jul 18 2017, 14:08:57) [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import
Python 3.6.2 (default, Jul 18 2017, 14:08:57)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> root, dir, files = os.walk('.') # ------> **no error**
>>> root, dir, files = os.walk('/') # ------> **error #1**
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 3)
>>> root, dir, files = os.walk('/usr/bin') # ------>**error #2**
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 1)
>>>
从文档中:
对于树中以目录顶部(包括顶部)为根的每个目录
它产生一个3元组(dirpath、dirname、filename)
因此,在上述每种情况下,可能会产生不同数量的元组,从而导致您的问题。来自文档:
对于树中以目录顶部(包括顶部)为根的每个目录
它产生一个3元组(dirpath、dirname、filename)
因此,在每种情况下,可能会产生不同数量的元组,这会导致您的问题。当您解包时,右侧的iterable会耗尽。您没有得到分配给
root、dirs、filenames
的dirpath、dirname、filenames
元组
尝试分配
os.walk的第一个结果(即第一个收益率)(解包时,您将耗尽右侧的iterable。您不会得到分配给root、dirs、filenames
的dirpath、dirname、filenames
元组
试图分配os.walk()的第一个结果(即第一个结果)os.walk(…)
生成的每个值都是一个3元组。您的代码就像函数返回一个这样的3元组一样,但它真正的意思是“在这个目录树中只期望3个目录,并给出(误导性的)(读取:在迭代过程中)os.walk(…)
生成的每个值都是一个3元组。您的代码就像函数返回一个这样的3元组,但它真正的意思是“在此目录树中只需要3个目录,并为(元组)提供(误导性的)名称”关于每一项的信息”
raghu$ pwd
/Users/raghu/PycharmProjects/Fib
raghu$ python
Python 3.6.2 (default, Jul 18 2017, 14:08:57)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> root, dir, files = os.walk('.') # ------>**no error**
>>> ^D
raghu$ cd ..
raghu$ pwd
/Users/raghu/PycharmProjects
raghu$ python
Python 3.6.2 (default, Jul 18 2017, 14:08:57)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> root, dir, files = os.walk('.') # ------>**error**
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 3)
>>> from os import walk
>>> len(list(walk('.')))
2300
>>> len(list(walk('/'))) # this is really dumb
127242
>>> len(list(walk('/usr/bin')))
1