如何从目录中读取文件并在 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
列表,以便您可以在模板中访问它
我正在 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
列表,以便您可以在模板中访问它