首页 > 解决方案 > Python Pandas 无法覆盖 csv 文件“OSError: [Errno 22] Invalid argument”

问题描述

我找到了许多与 Errno 22 相关的答案,但没有特定于熊猫的答案,也没有任何仅在覆盖时而不是在写入时(初始写入成功)的答案。

因此,我设法使用以下 python 脚本重新创建了该错误:

import pandas as pd

print('path:')
path = input()

data = pd.DataFrame(data=[1,2,3], columns=['index'])
data.to_csv(path, encoding='utf-8', index=False)

data = data.append(pd.DataFrame(data=[4,5,6], columns=['index']))
data.to_csv(path, encoding='utf-8', index=False)

所以第一次调用 to_csv 会写入以下文件

index
1
2
3

但对 to_csv 的第二次调用会导致错误:

OSError: [Errno 22] Invalid argument: '[path omitted]/python/bug'

任何帮助深表感谢 :)

标签: pythonpandascsv

解决方案


我找到的解决方案是使用 os.remove(path):

import pandas as pd
import os

print('path:')
path = input()

data = pd.DataFrame(data=[1,2,3], columns=['index'])
data.to_csv(path, encoding='utf-8', index=False)

if(os.path.exists(path)):
    os.remove(path)

data = data.append(pd.DataFrame(data=[4,5,6], columns=['index']))
data.to_csv(path, encoding='utf-8', index=False)

可惜 to_csv 没有覆盖模式


推荐阅读