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)
当您像这样分配两个变量时:
code, add = name.split('-')
Python 期望右侧部分包含两个值。这就是为什么它说:
not enough values to unpack (expected 2)
它期望两个值。您可能尝试拆分一个没有-
符号的文件名,因为 Python 在拆分后仅收到一个值。这就是为什么它说:
(expected 2, got 1)