python - 值错误:关闭文件的I / O操作

时间:2016-07-15 01:51:32

标签: python csv pandas

我是Python的新手。

我正在创建一个我可以运行的脚本,它将处理XLSX文件并将其转换为管道“|”分隔的csv。谢天谢地,我已经把这件事弄清楚了。但是,我正在尝试添加一个额外的步骤 - 我想要删除文件中的任何逗号相同的脚本。我以为我有它,但是,我收到以下错误消息:值错误:关闭文件上的I / O操作。据我所知,我可能有缩进问题,但我无法弄清楚在哪里。我尝试了几种组合。这是我的代码:

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()

1 个答案:

答案 0 :(得分: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)