Python 如何在Django中打开用户上载的文件

Python 如何在Django中打开用户上载的文件,python,django,file-upload,Python,Django,File Upload,因此,我试图打开并操作用户上传的文件,这些文件存储在我的Django应用程序的MEDIA\u ROOT目录中 到目前为止,我只能打开项目目录中的文件。我尝试访问Mymedia目录下MyData\u files目录中的文件,如下所示: 尝试#1 尝试#2 我的第二次尝试利用了Django的文件存储API,但它们都不允许我访问项目目录中文件之外的任何位置的文件 给出的错误是: file b'PVP3.CSV' does not exist 追溯到: Environment: Request M

因此,我试图打开并操作用户上传的文件,这些文件存储在我的Django应用程序的
MEDIA\u ROOT
目录中

到目前为止,我只能打开项目目录中的文件。我尝试访问My
media
目录下My
Data\u files
目录中的文件,如下所示:

尝试#1 尝试#2 我的第二次尝试利用了Django的
文件存储API
,但它们都不允许我访问项目目录中文件之外的任何位置的文件

给出的错误是:

file b'PVP3.CSV' does not exist
追溯到:

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/graphite/file_upload/

Django Version: 1.7.1
Python Version: 3.4.2
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'graphite',
 'debug_toolbar')
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware')


Traceback:
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\core\handlers\base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\contrib\auth\decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in upload_file
  112.  data_df = html_graph(request)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in html_graph
  310.      data_df = pd.read_csv(new_file, skiprows=header_row).drop(0, axis=0).astype(float)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in parser_f
  465.         return _read(filepath_or_buffer, kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _read
  241.     parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
  557.         self._make_engine(self.engine)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _make_engine
  694.             self._engine = CParserWrapper(self.f, **self.options)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
  1056.         self._reader = _parser.TextReader(src, **kwds)

Exception Type: OSError at /graphite/file_upload/
Exception Value: File b'PVP3.CSV' does not exist

是否有其他方法访问这些文件,或者我的代码在逻辑上有问题?

您还没有说在尝试这两种方法时出现了什么问题。啊,我本想添加错误/回溯,但忘记了。请参阅编辑。您是否检查了文件是否确实存在?还可以尝试打印您试图打开文件的位置的绝对路径,看看它是否正常。顺便说一下,你不应该在阻止web请求的过程中做这些事情,但我不知道你是否这样做。@BjornTipling文件确实存在,但问题可能在于,我向用户展示了一个从文件中的数据生成的图形,并且在图形视图中,它试图在文件保存到
媒体
目录之前引用该文件?您尝试过使用pdb吗?你可以核实一下。
file b'PVP3.CSV' does not exist
Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/graphite/file_upload/

Django Version: 1.7.1
Python Version: 3.4.2
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'graphite',
 'debug_toolbar')
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware')


Traceback:
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\core\handlers\base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\contrib\auth\decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in upload_file
  112.  data_df = html_graph(request)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in html_graph
  310.      data_df = pd.read_csv(new_file, skiprows=header_row).drop(0, axis=0).astype(float)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in parser_f
  465.         return _read(filepath_or_buffer, kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _read
  241.     parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
  557.         self._make_engine(self.engine)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _make_engine
  694.             self._engine = CParserWrapper(self.f, **self.options)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
  1056.         self._reader = _parser.TextReader(src, **kwds)

Exception Type: OSError at /graphite/file_upload/
Exception Value: File b'PVP3.CSV' does not exist