ValueError:没有足够的值要解压(预期2,得到1)-一旦文件从一个位置移到另一个位置,我会收到此错误

问题描述 投票:0回答:4

希望您一切都好。我尝试编写一个脚本,该脚本根据我为文件命名的内容将文件从一个文件夹移动到选定的文件夹中。例如,“ Physics-a”将从“ ts”文件夹移动到“ / Physics / Assignments”,以整理我的笔记。它在后台连续运行,并在将某些文件保存/移动到“ ts”文件夹中时为这些文件分配新的位置。

虽然我的脚本有效,但分配了两个文件后,我收到以下错误:第14行,添加= name.split('-')ValueError:没有足够的值可解包(预期2,得到1)。

我不明白为什么会发生这种情况以及如何解决。

此外,如果有人可以给我一些建议,我可以从总体上改善我的编码,我将不胜感激。谢谢!

import os
import time
from datetime import date

def clean():

    os.chdir('/Users/Chadd/Desktop/ts')

    i = 0
    while i < len(os.listdir()):
        i = 0

        name, ext = os.path.splitext(os.listdir()[i])
        code, add = name.split('-')
        folder = code.strip().upper()

        if add.strip() == 'a': add = 'Assignments'
        if add.strip() == 'p': add = 'Past Papers'
        if add.strip() == 'n': add = 'Notes'
        if add.strip() == 't': add = 'Tutorials'

        today = date.today()

        os.rename(
        '/Users/Chadd/Desktop/ts/{}'.format(os.listdir()[i]),
        '/Users/Chadd/Desktop/{}/{}/{}'.format(folder, add, folder + ' - ' + add[:-1] + ' (' + str(today) + ')' + ' - ' + str(1 + len(os.listdir('/Users/Chadd/Desktop/{}/{}'.format(folder, add.strip())))) + ext)
         )

        if len(os.listdir()) == 0:
            break

while True:
    clean()
    time.sleep(1)
python while-loop operating-system rename file-rename
4个回答
0
投票

当您分配两个这样的变量时:

code, add = name.split('-')

Python希望右侧部分包含两个值。这就是为什么它说:

not enough values to unpack (expected 2)

期望两个值。您可能试图分割不带-符号的文件名,因为分割后Python仅收到一个值。这就是为什么它说:

(expected 2, got 1)


0
投票

name不包含破折号(-)。您正在尝试按-拆分,左侧分配给单独的变量,右侧分配给另一个变量。分割之前,您应该检查name是否包含-


0
投票

第14行,

code, add = name.split('-')

期望有两个元素的元组,第一个元素分配给代码,第二个元素添加。当您遇到错误时,必须将name设置为其中没有'-'的值,因此split命令将返回单个值。


0
投票

问题:name中的某些值中没有-。因此,name.split('-')将返回其中仅包含一项的列表。将列表分配给两个变量后,代码将如下所示:

name,ext = ['some name']

您可以看到,python没有足够的值来分配,它抛出了ValueError: not enough values to unpack (expected 2, got 1)

解决方案:检查name仅包含一个-。如果包含多个-,它将抛出ValueError: too many values to unpack (expected 2)

© www.soinside.com 2019 - 2024. All rights reserved.