我在Django视图中定义了以下视图:-
def csv_file_upload(request):
if request.method == "POST" and request.FILES['file_upload']:
registry = request.POST.get('reg_select').lower()
csv_file = request.FILES['file_upload']
data = pd.read_csv(csv_file, delimiter="\|\|")
print(data.head())
return render(request, "csv_file_upload.html", {})
但是pd.read_csv部分给了我这个错误:-
cannot use a string pattern on a bytes-like object
我拥有的示例csv文件是这样的:
Col_A||Col_B||Col_C
A0||B0||C0
A1||B1||C1
我可以在不使用Django的情况下使用pd.read_csv()
读取同一文件,也不会出现此错误。
为什么在使用Django时会导致此错误?
答案 0 :(得分:1)
文件以字节为单位而不是字符串(期望)上载
您应该阅读文件并将其内容解码为字符串
csv_bytes = request.FILES['file_upload'].read()
csv_text = csv_bytes.decode('utf-8')
string_buffer = io.StringIO(csv_text)
data = pd.read_csv(string_buffer , delimiter="\|\|")