python - 值错误 : I/O operation on closed file

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

最佳答案

就是这样。 (基本上,您在第一次通过 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 block ,该 block 会在您离开范围时自动关闭文件:

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)

关于python - 值错误 : I/O operation on closed file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38386725/

相关文章:

python - Sqlite不使用默认值

python - 在 Flask/Python 中创建 Enum 常量

python - 将特定权重乘以列并在新列中加在一起

python - PyCharm 警告和预期类型 : When To Care?

node.js - 使用node.js csv模块从mongodb生成csv文件

python - 对 pandas 数据框进行分组,然后通过聚合取abs的平均值

python - 如何使用数据框计算每小时的某些值

python - 从提取的 JSON 数据追加和/或写入 CSV

php - 从数据库表输出csv文件

python-3.x - 相当于 R 的 "attach"在 Python 中的数据帧?