以下代码:
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)
导致在调用OSX中的最后一行(即“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
我试过chmod 777 /Users/jondoe/development/mdb-export
-还需要什么?
你能把“sudo”输入子流程吗?请看这个thread。
@Jon Hadley,来自翻译:
从OS X上的终端,我必须在运行脚本时执行sudo:
然后这个(在test.py中)给出与前面相同的输出:
让子流程直接从脚本处理身份验证可能不是一个好主意,因为它隐藏了权限提升。但你可以看看pexpect和这个answer。
“Permissions denied错误”似乎源于Popen试图从错误的位置执行mdb导出(并使用错误的权限进行复合)。
如果安装了mdbtools,则以下命令可以正常工作并继承正确的权限,而无需sudo等
(值得注意的是,我一时糊涂了,忘记了Popen是用来打开可执行文件的,而不是文件夹或文件夹中的不可执行文件)
谢谢你的回复,不管怎样,它们都是为了有趣的阅读而写的:)
假设对父文件夹的权限正确(即所有父文件夹都应具有+x权限),请尝试添加:
对于Popen命令,例如:
相关问题 更多 >
编程相关推荐