首页 > 解决方案 > 为什么 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'

我很困惑。有任何想法吗?

标签: pythonwith-statement

解决方案


首先,您必须确定远程服务器上是否存在路径。

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"

推荐阅读