python - Python else 为每个 for 循环运行
问题描述
我的脚本有一些问题。假设组织一些文件检查它们的扩展名和一些文件名。问题在于 for 循环for series_path in os.listdir(dir_series:
,for 遍历文件夹列表并执行一些操作。首先检查是否存在不关心大写的文件夹,然后对包含该文件夹的文件夹执行相同操作。一个if循环开始发挥作用来检查一些条件。那行得通,问题是其他
else: print(colored("\n\n*****************************************",'cyan', attrs=['bold'])))
第一个if继续为它在 for 循环中找到的每个文件运行以尝试创建一个文件夹,并且它应该只执行它找到具有一定扩展名的文件的次数。
#!/usr/bin/env python3
import sys, glob, re, os, shutil
from termcolor import colored
#enconding: utf-8
dir_series = "/home/user/series/series/"
dir_temp = "/home/user/stuff/shared/temp/"
buscar = "*[sS][0-9][0-9]*"
series = [os.path.join(root, s) for root, dirs, files in os.walk(dir_temp) for s in files if s.endswith(('.mp4', '.srt', '.avi', '.mkv'))]
if series:
arch_encontrados = len(series)
print(colored("\nArchivos encontrados:",'red', attrs=['bold'] ), colored(arch_encontrados, 'red', attrs=['bold'] ),'\n')
for series_base in series:
print(os.path.basename(series_base), sep = "\n")
for serie in series:
#Extraer el nombre de la serie
nombre = re.findall(r'.*[\. ][sS]\d', os.path.basename(serie))[0]
nombre_final = re.sub(r'[\. ][sS]\d','',nombre).replace('.',' ')
#Extraer el número de la temporada
season = re.findall(r'[\. ][sS]\d\d', serie)[0]
season_final_numero = re.sub(r'[\. ][sS]','',season)
season_final = ('season ' + season_final_numero)
#Armar el directorio final
for series_path in os.listdir(dir_series): #lista el contenido de /home/user/series/series/
if nombre_final.lower() == series_path.lower(): #compara el listado con la salida del nombre de la serie sin importar mayúsculas y minúsculas
for season_path in os.listdir(dir_series + series_path):
if season_final == season_path: #compara el listado de seasons contra season_final que tiene mayuscula
path = os.path.join(dir_series, series_path, season_final)
print('1')
else:
path = os.path.join(dir_series, series_path, 'Season ' + season_final_numero)
print('2')
else:
print(colored("\n\n*****************************************",'cyan', attrs=['bold']))
print(colored("** Directorio no encontrado, creándolo **",'cyan', attrs=['bold']))
print(colored("*****************************************\n",'cyan', attrs=['bold']))
path = os.path.join(dir_series, nombre_final, season_final)
print(path)
os.makedirs(path)
#Mover el archivo
print(colored('\nCopiando','green'), os.path.basename(serie), colored('a', 'green'), path)
shutil.move(serie,path)
else:
print(colored('\nNo hay archivos para organizar.','green', attrs=['bold']))
input(colored("\n\nPresione Enter para continuar ...", attrs=['blink', 'bold']))
任何想法如何更改脚本来做到这一点?
解决方案
推荐阅读
- python - 如何以升序方式对字符串列表进行排序?
- vue.js - 如何在 VUEX Store 的 v-select 中显示嵌套数据
- embedded - 在 NXP LPC24xx 中将引脚切换到输出
- angular - 导航到 Azure Blob 存储上的 Angular 9 应用程序的 Azure 函数代理会导致 mime 类型错误
- sql - 基于 Pyspark 中其他值的一列的条件聚合
- amazon-web-services - 无法在亚马逊 Ec2 实例上的 docker 中运行 Elasticsearch
- r - 可以根据轴的变量更改的散点图函数
- jquery - 使用 html2canvas 和 jspdf 创建的 PDF 文件 - pdf 中不允许选择文本
- reactjs - 如何使用 React 和 Material-UI 嵌入 Calendly 锚标签
- clickhouse - 有没有办法在 ClickHouse 中漂亮地打印 SELECT 查询结果?