2016-07-15 125 views
2

我对Python很新。python - 值错误:关闭文件上的I/O操作

我正在创建一个脚本,我可以运行它将处理一个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() 

回答

2

就是这样。自动

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块将:(基本上你关闭你的第一次通过for迭代的文件。)尝试这种改变当您离开示波器时关闭文件:

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