我有一个从熊猫数据帧创建的csv。
但是,一旦我添加它,它就会抛出:OSError:[Errno 95]操作不受支持
for single_date in [d for d in (start_date + timedelta(n) for n in range(day_count)) if d <= end_date]:
currentDate = datetime.strftime(single_date,"%Y-%m-%d")
#Send request for one day to the API and store it in a daily csv file
response = requests.get(endpoint+f"?startDate={currentDate}&endDate={currentDate}",headers=headers)
rawData = pd.read_csv(io.StringIO(response.content.decode('utf-8')))
outFileName = 'test1.csv'
outdir = '/dbfs/mnt/project/test2/'
if not os.path.exists(outdir):
os.mkdir(outdir)
fullname = os.path.join(outdir, outFileName)
pdf = pd.DataFrame(rawData)
if not os.path.isfile(fullname):
pdf.to_csv(fullname, header=True, index=False)
else: # else it exists so append without writing the header
with open(fullname, 'a') as f: #This part gives error... If i write 'w' as mode, its overwriting and working fine.
pdf.to_csv(f, header=False, index=False, mode='a')
答案 0 :(得分:0)
我猜是因为您以追加模式打开了文件,然后在对mode = 'a'
的调用中再次传递了to_csv
。您可以尝试简单地做到这一点吗?
pdf = pd.DataFrame(rawData)
if not os.path.isfile(fullname):
pdf.to_csv(fullname, header=True, index=False)
else: # else it exists so append without writing the header
pdf.to_csv(fullname, header=False, index=False, mode='a')
答案 1 :(得分:0)
添加后效果不佳。因此,我创建了Parque文件,然后将其读取为数据框。
答案 2 :(得分:0)
我遇到了类似的问题,根本原因是 Databrick Runtime> 6 不支持对DBFS中存在的文件进行追加或随机写入操作。在我将运行时从 5.5升级到6 之前,这对我来说一直很好,因为他们建议这样做,因为那时他们不再支持运行时<6。
我遵循了这种解决方法,以代码形式读取文件,附加了数据并覆盖了它。