ValueError:分割字符串时没有足够的值来解压(预期为 2,得到 1)

Cha*_*son 4 python string split while-loop iterable-unpacking

我尝试编写一个脚本,根据我对文件的命名,将文件从一个文件夹移动到一组文件夹。

例如,“Physics - a”将从“ts”文件夹移动到“/Physics/Assignments”,以便组织我的笔记。

它在后台持续运行,并在将某些内容放入“ts”文件夹时为这些文件分配新的位置。

我的脚本有效,但分配两个文件后,出现以下错误

第 14 行,add = 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)
Run Code Online (Sandbox Code Playgroud)

Nic*_*ais 5

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

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

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

not enough values to unpack (expected 2)

它期望两个值。您可能尝试拆分一个没有-符号的文件名,因为 Python 在拆分后仅收到一个值。这就是为什么它说:

(expected 2, got 1)