如何模拟系统argv[1:]基于web的python

2024-06-17 10:50:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

if __name__ == "__main__":
    main(sys.argv[1:])

要运行这个,我必须使用Shell或终端,如下所示:

^{pr2}$

该脚本接受一个文件,然后执行其余的所有工作。 现在,我试着在一个网络服务器上运行这个程序。在

所以我使用一个HTML表单将文件提交给这个脚本。 在Python脚本中,我是这样做的:

....
elif req.form.has_key("filename"):
    item=req.form["filename"]
    if item.file:
        req.write("I GO HERE")
        myscript.main(item)
....

正如您在这里看到的,我试图将文件直接发送到“main”函数。 这样做对吗?在

我没有发现任何脚本错误,但是Python脚本没有产生预期的结果。在

有什么帮助吗? 谢谢


Tags: 文件name程序form脚本终端ifmain
1条回答
网友
1楼 · 发布于 2024-06-17 10:50:39

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

例如(未测试):

import os
import tempfile    

fd, temp_filename = tempfile.mkstemp()
try:
    with os.fdopen(fd, "wb") as f:
        # Copy file data to temp file
        while True:
            chunk = item.file.read(100000)
            if not chunk: break
            f.write(chunk)

        # Call script's main() function
        myscript.main([temp_filename])
finally:
    os.remove(temp_filename)

相关问题 更多 >