如何从目录中读取文件并在 django 中打印时删除扩展名?

how to read a file from a directory and removing the extension when printing it in django?

我正在 Django 上构建一个网络应用程序,我实现了两个功能,一个是将 csv 文件保存在我 PC 上的一个文件目录中,另一个是读取这些文件以在网站上查看它们。

我的问题是我想从目录中读取 csv 文件并显示它们,但没有 csv 扩展名,我希望它们的名称是唯一可见的,但我一直收到此错误 FileNotFoundError .

这是将文件保存到目录的功能

def openDataset(request):
    if request.method == "GET":
        return render(request, 'blog/upload_csv_ag.html')

    if request.FILES.get("file2") is not None:
        csv_file = request.FILES['file2']

        if not csv_file.name.endswith('.csv'):
            message='The uploaded file has to be CSV.  Please try again.'
            return render(request, 'blog/upload_csv_ag.html',{'message':message})
        else:
            save_path = 'C:/Users/user/Desktop/Fault Detection App/Uploaded_Datasets/'
            file_name = csv_file.name
            fs = FileSystemStorage(location=save_path)
            file = fs.save(file_name, csv_file)
    else:
        message='no file is uploaded'
        return render(request, 'blog/upload_csv_ag.html',{'message':message})       
    return render(request,'blog/upload_csv_ag.html',{'message':'Dataset Uploaded'})

以及从目录中读取文件的函数

def read_datasets(request):
    path = r"C:/Users/user/Desktop/Fault Detection App/Uploaded_Datasets/"
    test = os.listdir(path)

    path1, dirs, files = next(os.walk(path))
    file_count = len(files)
    print(file_count)

    dataframes_list_html = []
    file_names = []
    index = []
    
    for i in range(file_count):
        temp_df = pd.read_csv(path+files[i])
        print(files[i])
        dataframes_list_html.append(temp_df.to_html(index=False))
        index.append(i)
        for item in test:
            if item.endswith(".csv"):
                os.remove(os.path.join(path, item))
                file_names.append(files[i])

    return render(request,'blog/view_datasets.html',{'files': file_names})

提取文件名

第 1 步:遍历目录

一个更简单的方法就是做

for file in os.listdir(base_path)

第 2 步 - 删除扩展程序

可以使用长青建议的方法

第 3 步 - 存储处理后的字符串

只需像您正在做的那样附加到您的 file_names 列表,然后 return 响应上下文中的列表

读取和显示 CSV 内容

实际上读取和 returning CSV 的内容稍微复杂一些,但是您当前的方法是使用 pandas 读取文件,并将数据帧转换为 html表应该工作得很好。请记住 return 上下文中的 dataframes_list_html 列表,以便您可以在模板中访问它