Python 将列表pickle为UTF-8
我想将所有文件从一个目录导入我的sql。但是我必须先对每个原始的.htb文件进行相同的更改。原始文件的问题是Python 将列表pickle为UTF-8,python,utf-8,pickle,Python,Utf 8,Pickle,我想将所有文件从一个目录导入我的sql。但是我必须先对每个原始的.htb文件进行相同的更改。原始文件的问题是 我不想导入列标题和第二行,因为它是空的 我需要将\t\t\t\n更改为仅\n,以便MySQL知道字段和行的结束位置 我需要删除------\n因为它只有1列与我的表不匹配(4列) 以下是原始.htb文件的外观: Beschreibung\t Kurzbeschreibung\t Einheit\t Wert\t\t\n \n 集线器\t集线器\t毫米\t 150.0000000000
Hub Hub mm 150.000000000000
Bohrung Bohru mm 135.000000000000
但我现在得到的是:
”ŒHub Hub mm 150.000000000000
”Œ%Bohrung Bohru mm 135.000000000000
这是我的密码:
import os
import pickle
folderpath = r"C:/Users/l-reh/Desktop/HTB"
filepaths = [os.path.join("C:/Users/l-reh/Desktop/HTB/", name) for name in os.listdir(folderpath)]
all_files = []
for path in filepaths:
with open(path, 'r') as f:
file = f.readlines()
all_files.append(file)
with open("C:/Users/l-reh/Desktop/Bachelorarbeit/DB Testdatensatz/HTB.htb", 'wb') as f:
pickle.dump(all_files, f)
pickle
生成一种二进制格式,其中包括每个字段的“头”字节(描述类型、长度,对于某些pickle协议,还包括帧数据),如果将输出视为文本,这些字节将看起来像垃圾文本。您不能说“我希望它是pickle
,但没有这些字节”,因为这些字节是pickle
序列化格式的一部分。如果不需要这些字节,则需要选择不同的序列化格式(可能使用与此HTB格式匹配的自定义序列化程序)。这与UTF-8编码或缺乏UTF-8编码无关(您的输入是ASCII),问题是您要求的结果在您的设计范围内几乎是不可能的。看来,pickle
根本不是正确的工具。顺便说一句:没有输入数据,您的问题就不可能重现。但是,您应该对示例数据进行硬编码,以便创建一个。作为这里的一个新用户,请同时阅读。感谢您的详细描述,现在我理解了错误。你知道我可以用什么序列化格式来达到我的目标吗?我需要文件为utf8的原因是,我可以将其导入mysqldatabase@Luis:首先不清楚您的原始数据有什么问题。为什么不能直接写出数据(以模式'w'
,编码
打开输出文件,然后以某种组合方式调用写入/写入线
)。您所需的输出看起来与可能的输入完全相同(您没有向我们展示,但它可能与您最初想要的格式相同)。最后,我的目标是将数据导入mysql数据库。我有几千个.htb文件需要导入mysql。但在导入它们之前,我需要从所有这些文件中删除一些字符。