本地环境:Python 3,Bottle,MacOs
远程环境:Python 3,Bottle,Pythonanywhere
这在我的本地环境中有效,但在我的远程环境中无效:
@route('/test')
def test():
'''Function tests file open issue.'''
with open('uploads/Project2.csv', 'r', newline='') as file:
content = ""
content = file.read()
return content
这在我的远程环境中有效,但在我的本地环境中无效:
@route('/test')
def test():
'''Function tests file open issue.'''
with open('uploads', 'r', newline='') as file:
content = ""
content = file.read()
return content
在第一种情况下,我将文件路径传递给open函数。如果将文件夹名称传递给它,则会返回此错误:
IsADirectoryError:[错误21]是目录:“上载”
在第二种情况下,我将文件夹名称传递给open函数。如果我通过文件路径,则会返回错误:
NotADirectoryError:[Errno 20]不是目录:'uploads / Project2.csv'
我感到困惑。有什么想法吗?
答案 0 :(得分:2)
首先,您必须确定该路径在远程服务器上是否存在。
import os
os.path.exists(<your path>)
秒, 您不必声明内容变量,只需声明它 这样。
content = file.read()
第三,
"uploads" is a directory not a file. Provide a file name in your
directory like you have provided in your local environment. if
"upload" is not a subdirectory of your code directory, then provide
absolute path. like
upload = "/home/ubuntu/env/uploads/projects.csv"
答案 1 :(得分:0)
在两种环境中,“上载”是代码目录的子目录,但是...
在本地环境中,相对路径已足够:
"uploads/file"
在远程环境中,需要绝对路径:
"/home/my_projects/project/uploads/file"
我认为这与在远程环境中而不是本地环境中将Bottle作为WSGI对象有关。