2016-07-15 2 views
2

Я очень новичок в Python.python - Ошибка значения: операция ввода/вывода в закрытом файле

Я создаю сценарий, который я могу запустить, который обработает файл XLSX и преобразует его в канал «|». ограниченные csv. К счастью, я вычислил эту часть. Тем не менее, я пытаюсь добавить дополнительный шаг - я хотел бы, чтобы тот же скрипт удалял любые запятые в моем файле. Я думал, что у меня это есть, однако я получаю следующее сообщение об ошибке: Ошибка значения: операция ввода-вывода в закрытом файле. Из того, что я могу сказать, у меня могут быть проблемы с отступом, но я не могу понять, где. Я попробовал несколько комбинаций. Вот мой код:

import pandas as pd 
import csv 

data_xls = pd.read_excel('Chartwell.xlsx', 'Chartwell', index = False) 
data_xls.to_csv('your_csv2.csv', index = False, sep='|', encoding='utf-8') 

input_file = open('your_csv2.csv', 'r') 
output_file = open('No_Commas.csv', 'w') 
for line in input_file: 
    line = line.replace(",", " ") 
    output_file.write(line) 
    output_file.close() 
    input_file.close() 

ответ

2

Это именно он. (В основном вы приближались файлы на первый проход через for итерации.) Попробуйте это изменение:

input_file = open('your_csv2.csv', 'r') 
output_file = open('No_Commas.csv', 'w') 
for line in input_file: 
    line = line.replace(",", " ") 
    output_file.write(line) 
output_file.close() 
input_file.close() 

Еще лучше, если у вас есть более последняя версия Python, вы можете использовать with блок, который будет автоматически закройте файл, когда вы выходите из области:

with open('your_csv2.csv', 'r') as f: 
    input_file = f.readlines() 
with open('No_Commas.csv', 'w') as output_file: 
    for line in input_file: 
     line = line.replace(",", " ") 
     output_file.write(line) 
+0

Спасибо, Алек! Это было именно то, что мне нужно. – specmer

Смежные вопросы