0

这可能是一个愚蠢的问题,但我就是不知道如何简化这段代码。

我有一个包含十一个文件上传按钮的网络表单。这些被标记为 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
4

2 回答 2

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
于 2012-05-31T16:02:39.047 回答
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 ...
于 2012-05-31T16:05:55.307 回答