Как я могу преобразовать фрейм данных в CSV и сохранить его, чтобы вернуть его? - PullRequest
1 голос
/ 15 октября 2019

Я читаю файл .xlsx и преобразую его в .csv, но мне нужно вернуть его как .csv, потому что у меня нет доступа к пути, где он должен храниться. Я смог вернуть его только в виде информационного кадра. Любая помощь будет по достоинству оценена. Спасибо.

import pandas as pd


def excel_to_csv(myfile):
    print(myfile)
    data_xls = pd.read_excel(myfile,  index_col=None)
    data_xls.to_csv(encoding='utf-8', index=False)
    return(data_xls)

myfile = request.FILES['file']
if myfile.name.endswith('.xlsx'):
    myfile=excel_to_csv(myfile)



Ответы [ 2 ]

1 голос
/ 15 октября 2019

Если вы используете Django, просто сохраните его в /media/ root, затем вы можете получить к нему доступ через url

Сначала вам нужно знать конфигурацию MEDIA_ROOT & MEDIA_URL внутри вашего settings.py .

Если его нет, вы можете создать его

[ settings.py ]

MEDIA_ROOT = os.path.join(BASE_DIR, 'myproject/static')
MEDIA_URL = '/media/'

Затем убедитесь, что вы уже добавили конфигурацию мультимедиа в urls.py

from django.conf.urls.static import static

urlpatterns = [
    # Project url patterns...
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Поскольку вы упомянули этот код myfile = request.FILES['file'], тогда я предполагаю, что выв views.py . И последнее, но не менее важное: нам нужно FileSystemStorage API.

Вот и все

[ views.py ]

from django.core.files.storage import FileSystemStorage

def upload(request):
    if request.method == "POST":
        csv_file = request.FILE['file']
        fs = FileSystemStorage()
        name = fs.save(csv_file.name, csv_file)
        print(f"file_name = {fs.url(name)}"
    return render(request, 'somepage.html')

Доступ к файлу через URL, www.yourhost.com/media/file_name

1 голос
/ 15 октября 2019

Если вы просто хотите прочитать файл Excel и получить те же данные, что и csv, напечатанные на вашем экране, может быть полезно следующее.

def excel_to_csv(file):
    df = pd.read_excel(file)
    csv_data = df.to_csv(encoding='utf-8', index=False)
    return csv_data

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

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