如何在基于web的python上模拟sys.argv[1:]

如何在基于web的python上模拟sys.argv[1:],python,file-upload,Python,File Upload,我有一个Python程序,其中启动脚本如下所示: if __name__ == "__main__": main(sys.argv[1:]) myscript somefile.xml .... elif req.form.has_key("filename"): item=req.form["filename"] if item.file: req.write("I GO HERE") myscript.main(item) ....

我有一个Python程序,其中启动脚本如下所示:

if __name__ == "__main__":
    main(sys.argv[1:])
myscript somefile.xml
....
elif req.form.has_key("filename"):
    item=req.form["filename"]
    if item.file:
        req.write("I GO HERE")
        myscript.main(item)
....
要运行此操作,我必须像这样使用Shell或终端:

if __name__ == "__main__":
    main(sys.argv[1:])
myscript somefile.xml
....
elif req.form.has_key("filename"):
    item=req.form["filename"]
    if item.file:
        req.write("I GO HERE")
        myscript.main(item)
....
脚本接受一个文件,然后完成所有剩余的工作。 现在,我正在尝试在web服务器上运行此程序

因此,我使用HTML表单将文件提交到此脚本。 在我的Python脚本中,我是这样做的:

if __name__ == "__main__":
    main(sys.argv[1:])
myscript somefile.xml
....
elif req.form.has_key("filename"):
    item=req.form["filename"]
    if item.file:
        req.write("I GO HERE")
        myscript.main(item)
....
正如您在这里看到的,我试图将文件直接发送到“main”函数。 这样做对吗

我没有得到任何脚本错误,但是Python脚本没有产生预期的结果

有什么帮助吗?
谢谢

将上载的文件内容写入临时文件(使用
tempfile.mkstemp()
)并将临时文件的文件名传递到列表中的
main()

例如(未经测试):


将上载的文件内容写入临时文件(使用
tempfile.mkstemp()
),并将临时文件的文件名传递到包装在列表中的
main()

例如(未经测试):


您使用的是什么框架?还是CGI脚本?实际上发生了什么?您使用的是什么框架?还是CGI脚本?实际上发生了什么?谢谢你的回答,但是我在这里得到了一个语法错误:将os.fdopen(fd,“wb”)作为f:Python的哪个版本?您可能需要从uuu future uuuu import添加
,并在文件顶部使用u语句
。您需要在复制循环后使用
f.flush()
,以确保内部IO缓冲区被刷新,并且所有数据都被真正写入文件。此外,通过使用
tempfile.NamedTemporaryFile
shutil.copyfileobj
可以简化代码。感谢您的回复,但我在这里得到了一个语法错误:使用os.fdopen(fd,“wb”)作为f:Python的哪个版本?您可能需要从uuu future uuuu import添加
,并在文件顶部使用u语句
。您需要在复制循环后使用
f.flush()
,以确保内部IO缓冲区被刷新,并且所有数据都被真正写入文件。此外,通过使用
tempfile.NamedTemporaryFile
shutil.copyfileobj
可以简化代码。