gpt4 book ai didi

python - ValueError : not enough values to unpack (expected 8, 得到 7) - 忽略不满足此要求的文件 - python

转载 作者:行者123 更新时间:2023-12-01 00:09:29 27 4
gpt4 key购买 nike

我正在尝试编写一些代码来打开文件并浏览它以重命名文件名的特定部分。到目前为止,我可以以我正在寻找的正确方式成功地重命名我想要的内容。当文件夹中的文件不包含足够的值来解压时,就会出现问题。有没有办法忽略这个文件?如果它不符合我的要求,我不需要重命名它,但我确实需要将该文件保留在文件夹中。这是我所拥有的:

os.chdir(r"C:\Users\for12\Desktop\Arid West\LC08_CU_008009_20140902_20190504_C01_V01_SR")

for f in os.listdir():
filename, filename_ext = os.path.splitext(f)
f_sat, f_cu, f_tile, f_sdate, f_date, f_1, f_2, f_band = (filename.split('_'))

if f_band.startswith("SRB"):
f_band = f_band.strip()[2:]

new_name = '{}_{}_{}_{}_{}_{}_{}_{}{}'.format(f_sat,f_cu,f_tile,f_sdate,f_date,f_1,f_2,f_band,filename_ext)

os.rename(f, new_name)

image

此图片显示了导致问题的 .xml,因为我将文件用“_”分割,并且它只包含 7 而不是 8。

最佳答案

让我们看一个简化的示例:

names = ['a_b_c', 'd_e_f', 'g_h']

我们可以将分割的结果保留为列表,而不是立即尝试解压值。然后,我们可以检查列表的长度是否符合我们的预期,然后对其进行进一步处理:

for name in names:
items = name.split('_')
if len(items) == 3:
print('{}.{}.{}'.format(*items))

这给了我们:

a.b.c
d.e.f

这里我们使用解包运算符 (*) 将列表的值解包为 format 方法的各个参数。

通过这种方法,如果您希望将其他显式参数传递给 format,它们需要位于解包参数之前。为了解决这个问题,我们可以使用格式字符串 {}-占位符中的位置参数。这是一个例子:

for name in names:
items = name.split('_')
if len(items) == 3:
print('{1}.{2}.{3}.{0}'.format('txt', *items))

这给了我们:

a.b.c.txt
d.e.f.txt

关于python - ValueError : not enough values to unpack (expected 8, 得到 7) - 忽略不满足此要求的文件 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59728305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com