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
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时必须使用“\”?