Python 如何在django中打开文件

Python 如何在django中打开文件,python,django,file-not-found,Python,Django,File Not Found,我正在尝试从视图中打开与应用程序位于同一目录中的文件 -app --views.py --about.txt --... 我打开文件的代码是 def home(请求): 以open('about.txt','r')作为f: 关于=f about=about.split('\n') about=''。加入(about) 返回呈现(请求'app/home.html',{'about':about}) 但我一直在犯错误` FileNotFoundError at / [Errno 2] No su

我正在尝试从视图中打开与应用程序位于同一目录中的文件

-app
--views.py
--about.txt
--...
我打开文件的代码是

def home(请求):
以open('about.txt','r')作为f:
关于=f
about=about.split('\n')
about='
'。加入(about) 返回呈现(请求'app/home.html',{'about':about})
但我一直在犯错误`

FileNotFoundError at /
[Errno 2] No such file or directory: 'about.txt'
考虑到这一点后,我想把它放在一个静态目录中,但它仍然会给出相同的错误

  • 我还是django的初学者
  • Django 2.2.3
  • Python 3.7.3
编辑: 我不知道这是否是原因。。。但当按enter键输入新行时,它会使其出现新的缩进。

TL;博士 要创建
app/about.txt
,您必须在路径前面加上类似
app
的内容。我没有足够的信息告诉您确切的情况,但以下是如何找到答案:

运行应用程序时,工作目录可能不在应用程序中。通过使用
os.getcwd()
,您可以找出它运行的路径。例如:

导入操作系统
# ...
def home(请求):
打印(os.getcwd())
以open('about.txt','r')作为f:
关于=f
about=about.split('\n')
about='
'。加入(about) 返回呈现(请求'app/home.html',{'about':about})

美元。如上所述,您的路径是相对的。无论何时运行代码,它都在“工作目录”中运行。例如,如果我在
app
目录中运行
python views.py
,当前工作目录(
cwd
)将是
app
。然后,当给定一个时,如
about.txt
(这实际上意味着
/about.txt
,其中
表示cwd),它在cwd中查找
about.txt

,如果相对路径不起作用,请尝试绝对路径。@klauds。什么意思?相对路径:
about.txt
,绝对路径:
/home/me/projects/my_first\u app/about.txt
@klauds。使用
~
是否表示
主页
?或者
home/me/
(我正在使用Windows)不,
~
是一个shell功能,而不是真正的文件名。但是有一个
os.path.expanduser()
在这种情况下会有所帮助。嗯。。。。你是说,
app/about.txt
将起作用,因为它的行为类似于
/app/about.txt
?(同样,这个解释帮助很大!)@12944qwerty我忘记了django在运行时使用什么作为cwd,但类似的东西。如果它运行在项目的另一个子目录中,您可能需要执行类似于
。/app/about.txt
的操作。(我已经一年没用django了,对不起!)嗯。。我试过这个
os.getcwd()
返回
C:\Users\me\Documents\python\project
所以,我尝试了
open('\\app\\about.txt')
但是。。。相同的error@12944qwerty啊哈!开头的
/
表示您的根目录。在这之前添加一个
,它应该可以工作(
打开('./app/about.txt')
)不。。也许我在使用Windows时必须使用“\”?