无法在Djnago中读取使用熊猫上传的csv文件

时间:2020-11-10 04:00:34

标签: django pandas

我在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时会导致此错误?

1 个答案:

答案 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="\|\|")