gpt4 book ai didi

django - 尝试从 View 写入文件时权限被拒绝

转载 作者:行者123 更新时间:2023-12-05 01:36:18 25 4
gpt4 key购买 nike

我为这个问题创建了一个聊天:here
我有一个 View 试图执行 f = open('textfile.txt', 'w')但是在我的实时服务器上,这会带来错误 [Errno 13] Permission denied: 'textfile.txt' .
我的文件结构如下:

- root
|
- project
|
- app
|
- media
View 所在的位置 app .
我曾尝试让 textfile.txt 存在于 root、项目、应用程序和媒体中,所有这些都具有 777 个文件权限(所有者、组和公众可以读取、写入和执行)[*1]。
如果我将命令更改为读取权限,即 f = open('textfile.txt', 'r')我犯了同样的错误。
我的媒体根设置为 os.path.join(os.path.dirname(__file__), 'media').replace('\\','/')而这一切都是通过 webfaction 在 apache 服务器上运行的。
所以我有两个问题。 django/python 试图从哪里打开这个文件?以及我需要更改什么才能获得 View 打开和写入文件的权限。
[*1] 我知道这不是一个好主意,我只是为了当前的调试目的设置了这个。

编辑:
我不知道这是否相关,但现在当我将其更改为 f = open(os.path.join(settings.MEDIA_URL, 'textfile.txt'), 'r') 时而不是 f = open(os.path.join(settings.MEDIA_URL, 'textfile.txt'), 'w')我收到错误 [Errno 2] No such file or directory .
不知道这个有没有意义...

最佳答案

鉴于以下情况:

f = open('textfile.txt', 'w')

它应该在与 __file__ 相同的目录中创建文件,当前运行的脚本或 views.py在你的场景中。

然而,最好是明确的,因此排除任何潜在的偏差。我建议将该行更改为:
import os
f = open(os.path.join(os.path.dirname(__file__), 'textfile.txt'), 'w')

或者甚至更好,例如:
import os
from django.conf import settings
f = open(os.path.join(settings.MEDIA_ROOT, 'textfile.txt'), 'w')

然后,您始终可以确定文件的确切保存位置,这应该允许您更适本地优化您的权限。或者,您可以使用 PROJECT_ROOT .

关于django - 尝试从 View 写入文件时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com