所以我正在开发一个应用程序,允许用户上传CSV文件,然后生成与其文件对应的图形数据。只有当上传的文件位于项目的当前工作目录中时,我才能在开发中工作。
我发现这背后的原因是因为在我的graph
视图中我打开了这样的文件:
data_file = open(new_file, 'rb')
Open
期望在项目目录中找到该文件。如果我尝试在该目录之外上传文件,则会抛出此错误:
Errno 2] No such file or directory: 'test.CSV'
我读过关于os.path.expanduser
并尝试过:
data_file = open(os.path.expanduser('~' + new_file), 'rb')
但没有成功。上面的代码尝试在C:/Users/test.csv
中找到该文件。
有关如何实现这一目标的任何建议将不胜感激。
我目前的尝试是:
file_upload_dir = os.path.join(settings.MEDIA_ROOT, 'Data_Files')
data_file = open(os.path.join(file_upload_dir, new_file), 'rb')
错误是:
File b'test.CSV' does not exist
Data_Files是我的Media文件夹中的文件夹。
答案 0 :(得分:1)
您需要加入~
,并将文件名与目录分隔符(os.sep
)联系起来。使用os.path.join
会为您完成。
data_file = open(os.path.expanduser(os.path.join('~', new_file)), 'rb')
答案 1 :(得分:1)
上传的文件以及应用程序生成的文件与项目目录(=>源代码)无关。您有一个设置存储位置的设置(settings.MEDIA_ROOT
),并且您有一个models.FileField
来记住它们的存储位置以及如何访问它们。