python - 为什么 Python open() 函数不接受“目录/文件名”作为参数?
问题描述
本地环境: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:[Errno 21] 是目录:“上传”
在第二种情况下,我将文件夹名称传递给 open 函数。如果我传递一个文件路径,它会返回错误:
NotADirectoryError:[Errno 20] 不是目录:'uploads/Project2.csv'
我很困惑。有任何想法吗?
解决方案
首先,您必须确定远程服务器上是否存在路径。
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"
推荐阅读
- github - 如何为 Github Action 提供文件内容作为输入?
- spring - 如何在 Spring + Thymeleaf 中获取选定值以输入值(作为对象)?
- python - 单击不检测组中的命令
- odoo - Odoo 产品搜索 to_date 不正确
- java - 使用thymeleaf从spring mvc应用程序中的数据库生成html选择选项
- webrtc - 服务器端实时分析来自客户端的视频流
- linux - 如何在一段时间内制作具有特定大小的文件?
- c# - ASP.NET Core 授权不适用于嵌套角色
- ssis - 使用 ssis 派生列表达式根据任何给定日期计算下周三
- jquery - Jquery在点击事件后显示输入文本字段