我知道有比 subprocess.Popen 更好的方法来做到这一点,但为了时间,这就是我正在使用的。我有一个名为 save_input.cgi 的脚本,它通过网络应用程序将文件保存到我的 linux 机器上。当它保存文件后,我需要它将该文件名作为参数传递给另一个脚本。这可能是我缺少的一些简单的东西,但这是我到目前为止所拥有的:
#!/usr/bin/python
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
# Get filename here.
fileitem = form['filename']
# Test if the file was uploaded
if fileitem.filename:
# strip leading path from file name to avoid
# directory traversal attacks
fn = os.path.basename(fileitem.filename.replace("\\", "/" ))
open('/tmp/' + fn, 'wb').write(fileitem.file.read())
message = 'The file "' + fn + '" was uploaded successfully'
subprocess.Popen(["python", "mod_check.py", '/tmp/' + fn])
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html>
<body>
<p>%s</p>
</body>
</html>
""" % (message,)
想法?非常感谢,我欠这个社区很多哈哈。
*我只是更新它以在 if fileitem.filename 块中包含子进程,但它似乎没有将文件名和位置作为参数传递给脚本。要回答另一个评论,是的,如果我手动输入“sudo python mod_check.py filename.txt”,这个脚本确实有效