如何使用Python Mechanize上传文件

如何使用Python Mechanize上传文件,python,html,file-upload,mechanize,Python,Html,File Upload,Mechanize,好的,我只使用了一天机械化,所以要友善:p 我想完成一个表格,包括一个(或两个,如果可能的话)文件上传样式字段。您单击的位置,它允许您浏览文件 (我想自动将.torrent上传到私人跟踪器/站点) 现在我在网站上看到了两个问题,没有一个表单有名字,所以我一直在使用表单的索引来选择它们 br.select_form(nr=4) 现在的问题是,我想在提交表单时也上传一个文件。有两个文件字段,我认为我没有正确指定每个字段。这是使用“打印br.form”制作的表单的“打印” 但是,它给出了这个错误

好的,我只使用了一天机械化,所以要友善:p

我想完成一个表格,包括一个(或两个,如果可能的话)文件上传样式字段。您单击的位置,它允许您浏览文件

(我想自动将.torrent上传到私人跟踪器/站点)

现在我在网站上看到了两个问题,没有一个表单有名字,所以我一直在使用表单的索引来选择它们

br.select_form(nr=4)
现在的问题是,我想在提交表单时也上传一个文件。有两个文件字段,我认为我没有正确指定每个字段。这是使用“打印br.form”制作的表单的“打印”

但是,它给出了这个错误

    Traceback (most recent call last):
  File "script.py", line 53, in <module>
    br.form.add_file(open(filename), 'text/plain', filename)
  File "/usr/local/lib/python2.6/dist-packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py", line 2968, in add_file
    self.find_control(name, "file", id=id, label=label, nr=nr).add_file(
  File "/usr/local/lib/python2.6/dist-packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py", line 3101, in find_control
    return self._find_control(name, type, kind, id, label, predicate, nr)
  File "/usr/local/lib/python2.6/dist-packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py", line 3183, in _find_control
    raise AmbiguityError("more than one control matching "+description)
mechanize._form.AmbiguityError: more than one control matching type 'file'
回溯(最近一次呼叫最后一次):
文件“script.py”,第53行,在
br.form.add_文件(打开(文件名),'text/plain',文件名)
文件“/usr/local/lib/python2.6/dist packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py”,第2968行,在add_文件中
self.find_控件(名称,“文件”,id=id,label=label,nr=nr)。添加_文件(
文件“/usr/local/lib/python2.6/dist packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py”,第3101行,在find_控件中
返回self.\u find\u控件(名称、类型、种类、id、标签、谓词、nr)
文件“/usr/local/lib/python2.6/dist packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py”,第3183行,在_find_控件中
引发歧义错误(“多个控件匹配”+说明)
mechanize.\u form.歧义错误:多个控件匹配类型“file”
那么,我该如何:

  • 告诉它我指的是哪个文件字段
  • 或者以不同的方式上传文件

非常感谢:)

社区:请修复,我是一个偶然的路人,遇到了这个错误并解决了它

br.form.add_file(open(filename), 'text/plain', filename, **kwargs)
您需要通过传入一个额外的关键字参数来确定要将文件添加到的特定控件来解决歧义。您可以添加名称、id、nr或标签

在这种情况下,它将是

br.form.add_file(open(filename), 'text/plain', filename, name='file')

通过添加打开的文件,我应该何时关闭该文件?
br.form.add_file(open(filename), 'text/plain', filename, **kwargs)
br.form.add_file(open(filename), 'text/plain', filename, name='file')