Python Pandas не может перезаписать CSV-файл "OSError: [Errno 22] Недопустимый аргумент" - PullRequest
0 голосов
/ 23 сентября 2018

Я нашел много ответов, относящихся к Errno 22, но ничего специфического для панд, и ничего, где речь идет только о перезаписи, а не о записи (первоначальная запись завершается успешно).

Так что мне удалось воссоздать ошибку со следующим питономscript:

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'

Anyпомощь очень ценится:)

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Решение, которое я нашел, заключается в использовании os.remove (путь):

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 не имеет режима перезаписи

0 голосов
/ 23 сентября 2018

Вы можете использовать задокументированную функцию DataFrame.update здесь .Позволяет перезаписывать данные:

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

newData = pd.DataFrame(data=[4,5,6], columns=['index'])
data.update(newData, join='left', overwrite=True, filter_func=None, raise_conflict=False)
data.to_csv(path, encoding='utf-8', index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...