为什么这些方法不像我期望的那样工作?我可以立即打印一条线 但是,该方法似乎没有其他功能。
我正在尝试
代码:
#! /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
import logging
import os
import re
import sys
from glob import glob
logging.basicConfig(level=logging.DEBUG)
class DcpParser:
"""Parses DCP Inspector output files, and writes summary files to a
directory whose path is supplied at construction."""
def parse(self, dir):
"""Parses all files in the current directory."""
cpl = []
content = []
contentkind = []
container = []
errors = []
package = []
summary = []
mainsound = []
mainpicture = []
encryption = []
duration = []
fsp = []
dimensiontype = []
aspect = []
filesize = [2]
audio = []
cpltype = []
os.chdir(dir)
files = glob('*')
logging.debug("Found files: %s", files)
for file in files:
try:
with open(file) as data:
logging.debug("Opening file: %s", data)
print("Scanning...\t\t\t", file)
for each_line in data:
#self.prints()
self.file_summary()
#self.audio()
except:
pass
def prints(self):
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')
def file_summary(self):
print('made it to summary')
self.file_audio()
for each_line in data:
if 'summary'in each_line:
summary.extend(each_line.split())
print(summary.extend(each_line.split()))
for x in range(len(summary)):
if 'fps' in summary[x]:
fps = summary[(x-1)]
duration = summary[(x-2)].strip()
elif 'summary:' in summary[x]:
content = summary[(x+1)]
content.strip(',')
elif '2D' in summary[x]:
dimensiontype = summary[(x)]
aspect = summary[(x+1)].strip(',')
elif '3D' in summary[x]:
dimensiontype = summary[(x)]
aspect = summary[(x+1)]
elif 'Errors' in each_line:
errors=(each_line.split())
elif 'Package with total size'in each_line:
if 'Bytes 0' in each_line:
pass
else:
temp =[]
temp.extend(each_line.split())
filesize=(temp.pop()+' '+temp.pop())
def file_audio(self):
print('made it to audio')
self.file_picture()
for each_line in data:
if 'MainSound'in each_line:
if 'audio' in each_line:
m = re.search('([0-9]+)bps', each_line)
if m is None:
bps = 'bps error'
else:
bps = int(m.group(1))
m = re.search('([0-9]+)ch', each_line)
if m is None:
channels = 'channel error'
else:
channels = int(m.group(1))
m = re.search('([0-9]+)kHz', each_line)
if m is None:
bandwidth = 'bandwidth error'
else:
bandwidth = int(m.group(1))
audio = '%ich %ikHz %ibps' % (channels, bandwidth, bps)
def file_picture(self):
print('made it to picture')
for each_line in data:
if 'MainPicture'in each_line:
if 'pictures' in each_line:
temp = []
temp.extend(each_line.split(','))
container = temp[-2]
encryption= temp[-3]
def file_cplId(self):
print('cpl id')
if 'CPL Id:'in each_line:
cpl=(each_line.split())
def file_cplType(self):
if 'CPL type: 'in each_line:
cpltype=(each_line.split())
cpltype = cpltype[2]
def file_contentKind(self):
if 'ContentKind: 'in each_line:
contentkind=(each_line.split())
contentkind = contentkind[1]
def file_contentTitleText(self):
if 'ContentTitleText:'in each_line:
content=(each_line.split(':'))
content = content[1]
if __name__ == '__main__':
print("Input directory name: " + os.getcwd())
default_dir = os.getenv('HOME') + '/Desktop/dcp_output'
prompt = "Please enter the output directory name [" + default_dir + "]: "
dir = input(prompt) or default_dir
print("Output directory name: " + dir)
parser = DcpParser()
parser.parse(dir )
答案 0 :(得分:2)
对我来说,似乎没有一个变量以self.
开头,这意味着你没有任何类成员,所有变量都是相应方法中的局部变量。
同样方便的是,在代码的主要部分周围使用了try except pass
,它将忽略发生的任何错误。其中一个错误是您在几个方法中访问data
,这些方法既不是全局变量也不是之前在方法中分配的。
删除try except pass
以进行调试,并报告发生的情况。