【发布时间】:2021-05-31 15:03:21
【问题描述】:
需要您的帮助吗?
我正在尝试匹配列表 newtracks(文件夹中的歌曲名称)与列表 filezto 和电子表格中的专辑。 如果文件夹中的歌曲名称与列表 filezto 匹配,并且有一个 Nasb 专辑,则将其复制到文件夹列表(ordfldrtosrt),如果不是,则将 nasb 专辑复制到列表(ntsubfldrs)。
由于某种原因,运行 if 语句时不会同步它们以打印它们匹配并将文件复制到文件夹中。我尝试了不同的选项,但无法使其工作。提前致谢。
albm = ["NASB", "NASB", "NASB", "NASB", "NTSB", "NTSB", "NTSB", "NTSB"]
newtracks = [
"Track1.mp3",
"Track2.mp3",
"Track3.mp3",
"Track4.mp3",
"Track5.mp3",
"Track5.mp3",
]
filezto = [
"Track1.mp3",
"Track2.mp3",
"Track3.mp3",
"Track4.mp3",
"Track5.mp3",
"Track5.mp3",
]
ordfldrtosrt = ["1-GEN-GENE", "2 - EXO - Exos", "3 - LEV - Lev", "4 - NUM - Numb"]
ntsubfldrs = ["1-MAT-Matt", "2 - MRK - Mar", "3 - LUK - LI", "4 - JHN - Jo"]
for album in albm:
for newtracks, filezto, ordfldrtosrt, ntsubfldrs in (
(ntk, ft, otm, nts)
for ntk in newtracks
for ft in filezto
for otm in ordfldrtosrt
for nts in ntsubfldrs
):
if album == "Nasb" and newtracks == filezto:
print("Yes", newtracks, " files to", filezto)
# shutil.copy('C:\\Users\\mrdrj\\Desktop\\SJ\\NASB\\'+newtracks, 'D:\\Desktop\\pythonProject\\Nasb\\'+ ordfldrtosrt+'\\'+newtracks)
else:
print("No", newtracks, " files to", filezto)
# shutil.copy('C:\\Users\\mrdrj\\Desktop\\SJ\\NASB\\'+newtracks, 'D:\\Desktop\\pythonProject\\Nasb\\'+ ntsubfldrs +'\\'+newtracks)
【问题讨论】:
-
省略数据完全没问题,但您使用“等”意味着语法错误。
ntsubfldrs = =是另一个语法错误。请更新您的示例,使其至少有效。您的硬编码输入,很好,现在告诉您获得和期望的输出(使用您的固定程序)。另外,因为这是 python 缩进问题。 -
在一行中使用函数而不是 5 个 for 循环。修复语法错误后,我留下“NameError:名称'filezto'未定义”。你真的很难帮助你。
-
感谢您的编辑。当运行它循环匹配重复值第一个示例 track1.mp3 track1.mp3 然后它拆分并执行 track1.mp3 仍然和 track2.mp3、track3.mp3 等。我正在寻找的结果是将 newtracks 与 filezto 和检查专辑是否为 NASB,如果是,则将歌曲从列表中复制到文件夹。我对 python 还是很陌生,并且仍在努力。有没有解释缩进认为缩进很好的网站。谢谢
-
请使用此信息更新您的问题。你所有的代码都被缩进了,所以这意味着我必须重新格式化才能运行它。
-
为什么albm包含重复值?
标签: python python-3.x list loops for-loop