2016-07-15 124 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