我正在构建一个用 Pandas 生成 csv 文件的脚本,但我正在尝试这样做,如果该文件已存在于指定路径中,则该脚本只会将新信息附加到现有文件中,而如果该文件不存在,它将创建一个新文件。
我现在的代码是这样的:
#Trying to find the file in the designated path and then appending the new info
try:
pd.read_csv('file.csv', encoding = 'ANSI')
info.to_csv('file.csv', index = False, header = None, sep = ';', encoding = 'ANSI', decimal = ',', mode = 'a')
#Creating a new file into the existing path if it doesn't exist
except IOError:
info.to_csv('file.csv', index = False, sep = ';', encoding = 'ANSI', decimal = ',', header = True)
这在白天工作正常,但是当我第二天尝试运行脚本时,pd.read_csv()
遇到以下错误:
ParserError:标记数据时出错。 C 错误:第 10 行应为 1 个字段,看到 2
我已经读到解决此问题的一种方法是添加参数 error_bad_lines = False
,但这会导致计算时间呈指数级减慢。本例中的冗长表明 .csv 文件的几乎每一行都包含一些额外的 \n。
是否有其他方法可以解决此文件附加/创建问题?
我需要能够在excel中打开这个文件来检查里面的信息。我应该尝试创建一个 .xlsx 文件而不是 .csv 吗?
答案 0 :(得分:1)
使用 pathlib 检查文件是否已经 exists。如果您真的想加载整个文件(仅检查它是否存在),则需要使用与 pd.to_csv
设置中相同的参数。但是后者对于简单的检查来说在计算上非常昂贵,所以我建议使用 pathlib
。
pd.read_csv
中的默认分隔符是 ,
(这是您的小数点分隔符),因此错误可能是由于尝试使用错误的分隔符(更多 here)读取文件。< /p>
可能的解决方案:
from pathlib import Path
if Path('file.csv').exists():
info.to_csv('file.csv', index = False, header = None, sep = ';', encoding = 'ANSI', decimal = ',', mode = 'a')
else:
info.to_csv('file.csv', index = False, sep = ';', encoding = 'ANSI', decimal = ',', header = True)