Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解压缩不同文件路径的os.WACK不一致错误_Python_Python 3.x_Python 3.6 - Fatal编程技术网

Python 解压缩不同文件路径的os.WACK不一致错误

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问题

我正在玩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 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