如何在基于web的python上模拟sys.argv[1:]
我有一个Python程序,其中启动脚本如下所示:如何在基于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) ....
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
可以简化代码。