Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列表pickle为UTF-8_Python_Utf 8_Pickle - Fatal编程技术网

Python 将列表pickle为UTF-8

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

我想将所有文件从一个目录导入我的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.000000000000\t\t\t\n

    Bohrung\t Bohru\t mm\t 135.000000000000\t\t\t\n

    -----\n

  • 到目前为止,我已经设法创建了所有文件的列表。我的下一步是将该列表写入一个单独的文件,然后我可以对其进行编辑。我遇到的问题是,当我将列表保存为文件时,会出现格式问题。我希望最终的文件具有utf8格式。 这就是我希望我的文件的外观:

    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。但在导入它们之前,我需要从所有这些文件中删除一些字符。