0
0 комментариев

Окружение:

Windows 8

Python 2.7.9

Django 1.6

openpyxl (для работы с файлами формата «*.xlsx»)

Основная задача:
Получить от пользователя файл формата «*.xlsx», прочитать его и загрузить данные в Систему.

Шаг на котором возникает проблема:
попытка переименовать файл (для приведения к нужному типу)

Traceback:

File "C:\PythonPtoject\venv\Mygtn\lib\site-packages\django\core\handlers\base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\PythonPtoject\project\MyGtn\MyGtn\AppGtn\views.py" in appgtn_import_in_system
  266.     os.rename(abs_file_data,abs_file_data_path + '.' + file_extension)
 
Exception Type: WindowsError at /register/import_in_system/
Exception Value: 32 ������� �� ����� �������� ������ � �����

Пояснения:

Для получения файла от пользователя использую простой html («<" и ">» убрал специльно):

form action="/register/import_in_system/" method="post"
    enctype="multipart/form-data">{% csrf_token %}
 
    input type="file" name="file_to_import">
    button type="submit">Загрузить файл импорта</button>
 
/form

После выбора пользователем файла и нажатия кнопки «Загрузить файл импорта» файл сохраняется во временную папку (механизм сохранения по умолчанию) с расширением «*.upload»

Пример: C:\users\sss\appdata\local\temp\t6rjr4.upload

Данное расширение openpyxl не понимает, поэтому я пытаюсь переименовать файл, а точнее сменить у него расширение с «.upload» на «.xlsx» используя os.rename()

код с переименованием:

abs_file_data  = 'c:\\users\\sss\\appdata\\local\\temp\\t6rjr4.upload' # (текущий абсолютный путь до файла)
abs_file_data_path  = 'c:\\users\\sss\\appdata\\local\\temp\\t6rjr4' # (абсолютный путь до файла без расширения)
file_extension = u'xlsx' # (новое расширение файла)
os.rename(abs_file_data,abs_file_data_path + '.' + file_extension)

Но при попытке выполнить эту строчку возникает указанная выше ошибка.

Изменен статус публикации
Добавить комментарий