subprocess.Popen需要什么权限?

Jon*_*ley 10 python macos subprocess popen

以下代码:

gb = self.request.form['groupby']
typ = self.request.form['type']
tbl = self.request.form['table']

primary = self.request.form.get('primary', None)

if primary is not None:
    create = False
else:
create = True

mdb = tempfile.NamedTemporaryFile()
mdb.write(self.request.form['mdb'].read())
mdb.seek(0)

csv = tempfile.TemporaryFile()
conversion = subprocess.Popen(("/Users/jondoe/development/mdb-export", mdb.name, tbl,),stdout=csv)
Run Code Online (Sandbox Code Playgroud)

调用最后一行时出现此错误,即OS X中的"conversion =".

Traceback (innermost last):
  Module ZPublisher.Publish, line 119, in publish
  Module ZPublisher.mapply, line 88, in mapply
  Module ZPublisher.Publish, line 42, in call_object
  Module circulartriangle.mdbtoat.mdb, line 62, in __call__
  Module subprocess, line 543, in __init__
  Module subprocess, line 975, in _execute_child
OSError: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)

我试过了chmod 777 /Users/jondoe/development/mdb-export- 可能还需要什么?

uno*_*ode 13

假设父文件夹的权限是正确的(即所有父文件夹应具有+ x权限),请尝试添加:

shell=True
Run Code Online (Sandbox Code Playgroud)

到Popen命令如:

subprocess.Popen(("/Users/jondoe/development/mdb-export", mdb.name, tbl,), stdout=csv, shell=True)
Run Code Online (Sandbox Code Playgroud)


Jon*_*ley 8

似乎'Permissions denied error'来自Popen尝试从错误的位置执行mdb-export(以及使用错误的权限复合内容).

如果安装了mdbtools,以下工作正常并继承了正确的权限,而无需sudo等.

subprocess.Popen(("mdb-export", mdb.name, tbl,),stdout=csv)
Run Code Online (Sandbox Code Playgroud)

(值得注意的是,我忘记了Popen打开可执行文件,而不是文件夹中的文件夹或不可检索的文件)

感谢您的所有回复,无论如何,他们都为有趣的阅读做了:)