遍历文件夹并将所有文本文件转换为csv文件错误

kyxcudwk  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(76)

我运行了一个Powershell代码,输出了一堆文本文件。
文本文件如下所示:
我的aText.txt

Clark Kent
    Dolly Parten
    Charlie Brown
    Gary Numan

字符串
它只是一个有名字的文本文件,没有头。我想把这些文件转换成csv文件,所以我转向Python,写了下面的代码:

import os
    import pandas as pd
    
    folder = '\path\text\'
    csvFolder = '\path\csv\'
    
    for filename in os.listdir(folder):
    
        if filename.endswith('.txt'):
            file_path = os.path.join(folder, filename)
            csvpath = os.path.join(csvFolder, filename)
            
            #if file is empty
            if os.stat(file_path).st_size == 0:
                df = pd.DataFrame()
    
            #for other files
            else:
                df = pd.read_csv(file_path, header=0, names=None)
    
            csv_path = os.path.splitext(csvpath)[0] + '.csv'
    
            df.to_csv(csv_path, index=False)
    
    
    print("Text files have been converted to csv")


当我运行它时,它给了我一个错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
我做了一些研究,但没有看到任何关于Pandas的东西,只有csv函数。有人在一些回复中包括了这个:

df = pd.read_csv(file_path, encoding='cp1252', header=0, names=None)


我试了一下,程序运行,但csv文件被奇怪的字符损坏了。我在一个测试文件夹中尝试了这个方法,在那里我创建了文本文件,它运行得很好,输出也很好,但使用从PowerShell创建的文本文件,代码运行(没有错误消息),但输出不正确。
下面是转换后我在csv文件中看到的示例:

¿ Ã Ÿâ


else statement似乎是错误发生的地方,因为这是转换发生的地方。我运行df

df = pd.read_csv(file_path, encoding='cp1252', header=0, names=None)
print("This is df: ", df)


这是示例输出:

This is df:      ÿþA
0   NaN
1   NaN
2   NaN
3   NaN
4   NaN
5   NaN

iecba09b

iecba09b1#

我认为我把这个问题夸大了。我认为这是一个更大的问题,但在等待响应的同时只是玩弄编码似乎解决了这个问题。我只是在编码中添加了utf-16

df = pd.read_csv(file_path, encoding='utf-16', header=0)
print("this is df: \n", df)

字符串
输出:

this is df:
Clark Kent
Dolly Parten
Charlie Brown
Gary Numan

相关问题