在python中将多个文本文件合并到数据帧中

在python中将多个文本文件合并到数据帧中,python,pandas,csv,Python,Pandas,Csv,我正在尝试将python中一个文件夹中的近3k文本文件合并到dataframe中。我已经成功地将所有文本文件合并到一个文本文件中,但是,当我尝试读取该文件时,它总是抛出一个错误 ParserError:检测到空字节。目前无法在Python的本机csv库中处理此字节,因此请改为传入engine='c' 我需要你的帮助 file_list=glob.glob(r"C:\Users\E0565588\Documents\POS Downloaded Data\New folder\*.*&q

我正在尝试将python中一个文件夹中的近3k文本文件合并到dataframe中。我已经成功地将所有文本文件合并到一个文本文件中,但是,当我尝试读取该文件时,它总是抛出一个错误

ParserError:检测到空字节。目前无法在Python的本机csv库中处理此字节,因此请改为传入engine='c'

我需要你的帮助

file_list=glob.glob(r"C:\Users\E0565588\Documents\POS Downloaded Data\New folder\*.*")
with open("result.txt", "wb") as outfile:
    for f in file_list:
        with open(f, "rb") as infile:
            outfile.write(infile.read())
df = pd.DataFrame()
a=pd.read_csv('result.txt',delimiter=",",header=None,engine='python', names=["Duns ID","Invoice Number","Invoice Line Number","Salesperson Name","Customer Number","Customer Name","Address Line 1","Address Line 2","Address Line ","City","State/Province","Postal Code","Country Code","NAICS","Part Number","Invoice Price","Invoice Quantity","Unit of Measure","Invoice Date","Order Date","Ship Date","Require Date","Program Type","Rebated Location ID"])
df=df.append(a)

`简短回答

read\u csv
call中省略
engine='python'
以使用默认引擎,或者替换空字节:

打开(“result.txt”、“w”)作为输出文件:
对于文件列表中的f:
以开放式(f,“r”)作为填充:
outfile.write(infle.read().replace(“\0”,”))

(也考虑删除<代码> B<代码>下面阅读)

长答案:

我不知道为什么要使用“python”引擎,但可以通过使用默认的“c”引擎来解决这个问题。后者处理空字节时没有问题。空字节用于标记文件的结尾。因此,当连接文件时,空字节最终会出现在组合文件中

如果必须使用“python”引擎,则可以替换空字节,如上图所示


我还建议在读/写时不要使用二进制模式(
b
)。这仅适用于读取和写入二进制数据,而不是像CSV这样的文本数据。

您好,谢谢您的帮助,在按照你的建议工作后,我对代码进行了更改,但它给我带来了一个新的错误:-UnicodeDecodeError:“charmap”编解码器无法解码65572处的字节0x9d:字符映射到@ZulfikarSKhan你在运行python 2还是3?@ZulfikarSKhan尝试将
encoding=“utf-8”
添加到你的
read\u csv
调用中。