这可能是一个愚蠢的问题,但我无法弄清楚如何简化这段代码。
我有一个包含11个文件上传按钮的网络表单。 这些被标记为p1-3,q1-5,x1-2和cb。
在处理上传的脚本中,我需要检查是否正在上传新文件,或者是否只更改了一个(或没有)文件。
如果它被更改,我保存并创建一个ogg以用于音频标签。
这是问题所在。如何干净地遍历变量名称?现在我有这样的十一个街区,这让我感到畏缩。
我想简单地创建一个函数来处理if:raise
之后的所有内容很容易,但我想做的只是传递一个函数列出我正在寻找的名字,拥有它分配一个变量,并处理业务。
try:
x2 = form['x2']
if not x2.filename: raise
outfile = '%s/x2.wav' % savepath
oggfile = '%s/x2.ogg' % oggdir
open(outfile, 'wb').write(x2.file.read())
command = 'oggenc %s -o %s' % (outfile, oggfile)
output = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT)
except:
pass
答案 0 :(得分:4)
尝试以下内容:
for x in ('p1', 'p2', 'p3', 'q1', 'q2', 'q3', 'q4', 'q5', 'x1', 'x2'):
try:
f = form[x]
if not f.filename: raise
outfile = '%s/%s.wav' % (savepath, x)
oggfile = '%s/%s.ogg' % (oggdir, x)
open(outfile, 'wb').write(f.file.read())
command = 'oggenc %s -o %s' % (outfile, oggfile)
output = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT)
except:
pass
答案 1 :(得分:3)
fields = ('p1', 'p2', 'p3', 'q1', 'q2', 'q3', 'q4', 'q5', 'x1', 'x2', 'cb')
for name in fields:
field = form[name]
if not field.filename:
continue # skips to the next field
outfile = '%s/%s.wav' % (savepath, name)
oggfile = '%s/%s.ogg' % (oggdir, name)
# and so on ...