Python Subprocess传递文件名的参数

时间:2013-03-01 20:00:25

标签: python cgi subprocess

我知道有一种比subprocess.Popen更好的方法,但是为了时间,这就是我正在使用的东西。我有一个名为save_input.cgi的脚本,它通过Web应用程序将文件保存到我的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”,这个脚本就可以了。

1 个答案:

答案 0 :(得分:0)

我忽略了一件简单的事情。解决了使用jordanm的回应。添加到代码块'if fileitem.filename'