#python #pandas #python-2.7 #csv
#python #pandas #python-2.7 #csv
Вопрос:
Есть ли способ сделать это? Вот мой текущий код.
try:
if len(df) > 0:
with open(r'\pathtodirIDS_' str(now)[:-2] '.csv', 'a') as f:
df.to_csv(f, sep=',', header=False, index=True, encoding='utf-8')
f.close()
except Exception, e:
print e
Комментарии:
1. Вам не нужно
f.close()
, для этого и естьwith
инструкция.2. Я не думаю, что вы можете добавлять в файл, если кто-то его использует. Вы можете скопировать и добавить к копии.
3. В какой операционной системе вы работаете? Какую ошибку вы получаете? Пожалуйста, укажите шаги для воспроизведения вашей проблемы
4. Это просто код pseduo? Это кажется выполнимым. Попробуйте это и обновите сообщение, если у вас возникнут какие-либо проблемы
5. @NickTheInventor нет, он всегда будет закрывать документ, если вы используете
with
инструкцию . В этом весь смысл использованияwith
инструкции здесь , если вы серьезно наблюдаете такое поведение, вам следует отправить отчет об ошибке как можно скорее
Ответ №1:
Я обнаружил, что не могу редактировать файл, который кто-то уже открыл. Что я могу сделать, так это обработать исключение с помощью cPickle, чтобы выгрузить новую информацию в файл pickle и загрузить ее, когда придет время поместить файл в csv в следующий раз.
try:
if len(df) > 0:
with open(r'\pathtodirIDS_' str(now)[:-2] '.csv', 'a') as f:
df.to_csv(f, sep=',', header=False, index=True, encoding='utf-8')
f.close()
except Exception, e:
cPickle.dump(df, open(r'C:missed rows.p','wb'))
missed_rows = cPickle.load(open(r'C:missed rows.p','rb'))
if len(missed_rows) > 0:
df = missed_rows.append(df, sort=True)
missed_rows = pd.DataFrame()
cPickle.dump(missed_rows, open(r'C:missed rows.p','wb'))
df = df.drop_duplicates()