Доступ к загруженным файлам из Django - PullRequest
0 голосов
/ 08 июня 2018

Я разрабатываю веб-приложение, которое позволяет пользователю загружать файл .xls.При загрузке файл должен быть сохранен, преобразован в файл .csv, а затем данные, содержащиеся в файле, будут импортированы с помощью скрипта импорта Python.

Все функции для импорта и преобразования данных являются полностью функциональными из оболочки, однако при тестировании через локальный хост файл преобразуется в .csv и сохраняется, но ни один из сценариев не запускается в новом файле.,

из views.py:

    #for uploading data on the dashboard
    def file_upload(request):
        if request.method == 'POST':
            save_path = os.path.join(str(settings.MEDIA_ROOT), 'uploads', str(request.FILES['file']))
            try:
                validate_file_extension(request.FILES['file'])
                path = default_storage.save(save_path, request.FILES['file'])
                data = xls_to_csv(save_path, str(settings.MEDIA_ROOT))
                create_athlete(data, filename)
                create_phase(data)
                create_health_report(data)
                create_workout_report(data)
            except:
                return redirect('polar:dashboard')
            return redirect('polar:dashboard')

из importcript.py

    def xls_to_csv(file_name, save_path):
        #Formats into pandas dataframe.
        formatted_dataframe = pd.read_excel(file_name, index_col=None)
        #Converts the formatted into a csv file and save it.
        file_name = file_name.replace('.xls', '.csv')
        new_file = formatted_dataframe.to_csv(file_name))
        module_dir = os.path.dirname(settings.BASE_DIR)
        file_path = os.path.join(module_dir, 'uploads', file_name)
        sample_data = open(file_name, 'r')
        unfiltered_data = sample_data.readlines()
        data = unfiltered_data[1:]
        return data

Как будто Django препятствует открытию вновь созданного CSV-файла ичитать из.Будем весьма благодарны за любые советы по решению этой проблемы!

1 Ответ

0 голосов
/ 08 июня 2018

Если вы работаете в среде Linux или Mac, важно дать директории загрузки права на чтение и запись.Или, если это не проблема, то, похоже, у вас проблема с обработкой файла xls to CSV, посмотрите этот

import xlrd
import unicodecsv

def xls2csv (xls_filename, csv_filename):
    # Converts an Excel file to a CSV file.
    # If the excel file has multiple worksheets, only the first 
    #worksheet is converted.
    # Uses unicodecsv, so it will handle Unicode characters.
    # Uses a recent version of xlrd, so it should handle old .xls and 
   # new 
   #.xlsx equally well.

   wb = xlrd.open_workbook(xls_filename)
   sh = wb.sheet_by_index(0)

   fh = open(csv_filename,"wb")
   csv_out = unicodecsv.writer(fh, encoding='utf-8')

   for row_number in xrange (sh.nrows):
       csv_out.writerow(sh.row_values(row_number))

   fh.close()

взятый из здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...