有没有更优雅的方法来处理评估许多案例?你知道吗
这看起来太难看了,也不是最有效的。有经验的Python3程序员吗 用巫毒术和列表理解来做密集的评估?你知道吗
示例文件位于底部。你知道吗
#! /usr/bin/env python3
#This utility attempts to parse the output text files generated by dcp_inspect
#for faster inspection and when attending to multiple DCP inspections.
#dcp_inspect_parse runs on Python3.x (Though I am testing on 3.3)
#
#
#
#
#
#
import glob
import os
import sys
print(os.getcwd())
cpl = []
content = []
contentkind = []
container = []
errors = []
package = []
summary = []
mainsound = []
mainpicture = []
encryption = []
duration = []
fsp = []
dimensiontype = []
aspect = []
filesize = [2]
audio = []
cpltype = []
dir= []
dir=input("Please enter directory location of dcp_inspect output***\n")
print('Changing directories')
os.chdir(dir)
print(os.getcwd())
print('Attempting to open file(s) in directory:\n')
print(dir,'\n')
for file in glob.glob("*"):
try:
newfile = file
print("Scanning...\t\t\t\t\t\t", newfile)
data = open(newfile)
for each_line in data:
if 'summary'in each_line:
summary.extend(each_line.split())
elif 'Errors' in each_line:
errors=(each_line.split())
elif 'Package with total size'in each_line:
if 'Bytes 0' in each_line:
continue
else:
temp =[]
temp.extend(each_line.split())
#print(len(temp))
filesize=(temp.pop()+' '+temp.pop())
#print('size =',size)
elif 'MainSound'in each_line:
if 'audio' in each_line:
if '24bps' in each_line:
if '48kHz' in each_line:
if '6ch' in each_line:
if '16ch' in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '16ch 48kHz 24bps'
elif '6ch' in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '6ch 48kHz 24bps'
elif '7ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '7ch 48kHz 24bps'
elif '8ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '8ch 48kHz 24bps'
elif '10ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '10ch 48kHz 24bps'
elif '11ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '11ch 48kHz 24bps'
elif '12ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '12ch 48kHz 24bps'
elif '13ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '13ch 48kHz 24bps'
elif '14ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '14ch 48kHz 24bps'
elif '15ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '15ch 48kHz 24bps'
elif '16ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '16ch 48kHz 24bps'
elif '17ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '17ch 48kHz 24bps'
elif '18ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '18ch 48kHz 24bps'
elif '19ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '19ch 48kHz 24bps'
elif '20ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '20ch 48kHz 24bps'
elif '21ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '21ch 48kHz 24bps'
elif '22ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '22ch 48kHz 24bps'
elif '23ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '23ch 48kHz 24bps'
elif '24ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '24ch 48kHz 24bps'
elif '96kHz' in each_line:
audio = 'unknown format, bitrate, etc'
if '6ch'in each_line:
if '16ch' in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '16ch 96kHz 24bps'
elif '26ch' in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '26ch 96kHz 24bps'
elif '6ch' in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '6ch 96kHz 24bps'
elif '7ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '7ch 96kHz 24bps'
elif '8ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '8ch 96kHz 24bps'
elif '9ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '9ch 96kHz 24bps'
elif '10ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '10ch 96kHz 24bps'
elif '11ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '11ch 96kHz 24bps'
elif '12ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '12ch 96kHz 24bps'
elif '13ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '13ch 96kHz 24bps'
elif '14ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '14ch 96kHz 24bps'
elif '15ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '15ch 96kHz 24bps'
elif '16ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '16ch 96kHz 24bps'
elif '17ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '17ch 96kHz 24bps'
elif '18ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '18ch 96kHz 24bps'
elif '19ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '19ch 96kHz 24bps'
elif '20ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '20ch 96kHz 24bps'
elif '21ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '21ch 96kHz 24bps'
elif '22ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '22ch 96kHz 24bps'
elif '23ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '23ch 96kHz 24bps'
elif '24ch'in each_line:
temp = []
temp.extend(each_line.split(','))
audio = '24ch 96kHz 24bps'
elif 'MainPicture'in each_line:
if 'pictures' in each_line:
temp = []
temp.extend(each_line.split(','))
container = temp[-2]
encryption= temp[-3]
elif 'CPL Id:'in each_line:
cpl=(each_line.split())
elif 'CPL type: 'in each_line:
cpltype=(each_line.split())
cpltype = cpltype[2]
elif 'ContentKind: 'in each_line:
contentkind=(each_line.split())
contentkind = contentkind[1]
elif 'ContentTitleText:'in each_line:
content=(each_line.split(':'))
content = content[1]
for x in range(len(summary)):
if 'fps' in summary[x]:
#print(summary[(x-1)],'near fps')
#print(summary[x],'near fps')
fps = summary[(x-1)]
duration = summary[(x-2)].strip()
elif 'summary:' in summary[x]:
#print(summary[(x)])
content = summary[(x+1)]
content.strip(',')
elif '2D' in summary[x]:
#print(summary[(x)], 'found')
dimensiontype = summary[(x)]
aspect = summary[(x+1)].strip(',')
elif '3D' in summary[x]:
#print(summary[(x)], 'found')
dimensiontype = summary[(x)]
aspect = summary[(x+1)]
print('Container: \t\t',container.strip())
print('CPL Type: \t\t',cpltype)
print('Duration: \t\t',duration.strip(','))
print('Frame Rate: \t\t',fps)
print('Aspect Ratio: \t\t',aspect.strip(','))
print('Dimension: \t\t',dimensiontype.strip(','))
print('Content Title: \t\t',content.strip(',').strip('""'))
print('Audio for DCP: \t\t', audio)
print('Package size: \t\t',filesize)
print('Encryption status: \t\t',encryption.upper().strip())
print('CPL ID: \t\t', cpl[2])
print('Content Kind: \t\t',contentkind.upper())
print('\n')
print('There are',errors[1],'Errors and',errors[3],'hints for', content.strip(','))
if errors[1] != '0':
print('could be issues\n')
else:
print('This DCP appears to be OK\n')
#print(summary)
data.close()
except:
print("Exception Encountered")
pass
找到1个资产映射 AM 7599203f-a73f-4c55-b967-93c3061e10ea:过夜者\U 01/Interop \U 20140108/ASSETMAP AM 7599203f-a73f-4c55-b967-93c3061e10ea列出了4项资产: cef846b8-8f85-4cb4-9cb8-f39e53ebe013:夜宿制\u 01/Interop \u 20140108/cef846b8-8f85-4cb4-9cb8-f39e53ebe013_pcm.mxf格式 c2cb9f04-83bf-4829-b4cf-e9963dbaa0d3:过夜者\U 01/Interop \U 20140108/c2cb9f04-83bf-4829-b4cf-e9963dbaa0d3 \U j2c.mxf d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:过夜者\U 01/Interop \U 20140108/d28cfbbd-9cc7-4cd9-ac18-66fc031b0118_cpl.xml文件 edc7e9bc-7397-4922-85e2-4ebf5b2d710a:过夜者\U 01/Interop \U 20140108/edc7e9bc-7397-4922-85e2-4ebf5b2d710a_pkl.xml文件 资产映射7599203f-a73f-4c55-b967-93c3061e10ea列出1件包装: 提供PKL文件:edc7e9bc-7397-4922-85e2-4ebf5b2d710a:/media/Overnighters\u 01/Interop\u 20140108/edc7e9bc-7397-4922-85e2-4ebf5b2d710a_pkl.xml文件你知道吗
找到1个包 提供PKL文件:edc7e9bc-7397-4922-85e2-4ebf5b2d710a:/media/Overnighters\u 01/Interop\u 20140108/edc7e9bc-7397-4922-85e2-4ebf5b2d710a_pkl.xml文件你知道吗
PKL edc7e9bc-7397-4922-85e2-4ebf5b2d710a:/媒体/过夜者\u 01/Interop \u 20140108/edc7e9bc-7397-4922-85e2-4ebf5b2d710a_pkl.xml文件 PKL edc7e9bc-7397-4922-85e2-4ebf5b2d710a:架构检查:确定 PKL edc7e9bc-7397-4922-85e2-4ebf5b2d710a:未找到签名节点 PKL edc7e9bc-7397-4922-85e2-4ebf5b2d710a:注释文本:过夜者\U 20140108 PKL edc7e9bc-7397-4922-85e2-4ebf5b2d710a列出了3项资产 cef846b8-8f85-4cb4-9cb8-f39e53ebe013:应用程序/x-smpte-mxf;asdcpKind=声音: d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:text/xml;asdcpKind=CPL:Overnighters\u 01/Interop\u 20140108/d28cfbbd-9cc7-4cd9-ac18-66fc031b0118_cpl.xml文件 […]g哈希值:0%[]ETA--::--:---经过--::--]g哈希值:16%[====]ETA 00:00:00经过00:00:00A 00:00:00经过00:00:00 PKL edc7e9bc-7397-4922-85e2-4ebf5b2d710a:封装大小:93.9 GB PKL edc7e9bc-7397-4922-85e2-4ebf5b2d710a列出了1个组成部分 CPL文件存在:d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:/media/Overnighters\u 01/Interop\u 20140108/d28cfbbd-9cc7-4cd9-ac18-66fc031b0118_cpl.xml文件你知道吗
找到1篇作文 CPL文件存在:d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:/media/Overnighters\u 01/Interop\u 20140108/d28cfbbd-9cc7-4cd9-ac18-66fc031b0118_cpl.xml文件你知道吗
CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:卷1:音频分析。。。 CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:卷1:音频分析:完成 CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:模式检查:确定 CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:未找到签名节点 CPL Id:d28cfbbd-9cc7-4cd9-ac18-66fc031b0118 CPL文件:/media/Overnighters\u 01/Interop\u 20140108/d28cfbbd-9cc7-4cd9-ac18-66fc031b0118_cpl.xml文件 CPL类型:Interop(http://www.digicine.com/PROTO-ASDCP-CPL-20040511#) ContentTitleText:夜宿\u FTR\u EN\u 51\u 2K\u 20140108\u CLO\u OV AnnotationText:[空] ContentKind:功能 发布日期:2014-01-08T17:49:36-08:00(2014年1月8日星期三17:49) 发行人:Colorflow Digital 创建者:Colorflow 卷数:1 卷轴1: 145729 01:41:12+01@24.0 c2cb9f04主图片(MXF互操作,01:43:53+18,纯文本,1920x1080,图片) 145729 01:41:12+01@24.0 cef846b8主声音(MXF互操作,01:43:53+18,纯文本,6ch 48kHz 24bps,[失败],[失败],音频) 总持续时间: 145729 01:41:12+01 @ 24.0 CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:合成摘要:“OVERNIGHTERS\u FTR\u F\u EN\u 51\u 2K\u 20140108\u CLO\u OV”,互操作,明文,2D,高清,高清,01:41:12+01,24.0 fps 合成完成
提示:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:第1卷:主图片具有非DCI纵横比1.778(1920x1080,高清):建议使用适当的非标准掩蔽进行播放 提示:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:第1卷:主图片具有非DCI像素尺寸(1920x1080,高清) 提示:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:命名约定:ContentTitleText“OVERNIGHTERS\u FTR\u F\u EN\u 51\u 2K\u 20140108\u CLO\u OV”缺少某些部分 提示:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:命名约定:9部分匹配:设施:“CLO”电影标题:“OVERNIGHTERS”内容类型:“FTR”纵横比:“F”音频类型:“51”分辨率:“2K”工作室:“EN”日期:“20140108”包装类型:“OV” 提示:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:命名约定:缺少2个部分:语言、区域和等级 提示:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:命名约定:部件纵横比声明为平坦,但组成纵横比为HD 提示:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:命名约定:部件分辨率要求2K,但组成分辨率为HD 信息:CPL d28cfbbd-9cc7-4cd9-ac18-66fc031b0118:Composition OVERNIGHTERS\u FTR\u F\u EN\u 51\u 2K\u 20140108\u CLO\u OV于3天前发布 信息:dcp\ U inspect v1.2013.12.16 2014年1月11日星期六10:57(00:01:18:46) 信息:已检查:/media 信息:找到1个总大小为93.9 GB的包 信息:找到1个Assetmap、1个包(0个签名)、1个合成(0个签名、1个明文/0 KDMs必需) 信息:0个错误,7个提示
您的程序可以通过分解
从每个
elif
开始,改为在elif节的上方或下方写一次。你知道吗通常,这样的解析可以通过将源代码拆分成块,然后将这些块用作函数字典的键来改进(或者,在您的例子中,字符串字典也可以工作,因为所有的终端函数只在它们的字符串中不同)。有关示例,请参见实例this blog post。只要输入是有规律的,这可能是实现良好重构的最佳途径。与流控制不同,数据结构是围绕将输入映射到输出的数据结构构建一个小程序,而不是在程序代码中嵌入映射的大程序。你知道吗
您可以对以下值使用regex match,而不是测试每个案例:
如果整行的格式与我看到的here相同,也可以匹配整行:
或者,如果您确切地知道行的外观,您可以使用PyParsing。你知道吗
相关问题 更多 >
编程相关推荐