写入文件在Python 3.5中不起作用
我编写了以下代码,以获取xlsx文件的第四列,并将其保存在csv文件中(如果需要的话)。但是它给出了以下错误:写入文件在Python 3.5中不起作用,python,Python,我编写了以下代码,以获取xlsx文件的第四列,并将其保存在csv文件中(如果需要的话)。但是它给出了以下错误:ValueError:write to closed file from __future__ import division, print_function import sys import numpy as np import csv import os import xlrd import csv import unicodecsv def xls_to_csv1(xls_fi
ValueError:write to closed file
from __future__ import division, print_function
import sys
import numpy as np
import csv
import os
import xlrd
import csv
import unicodecsv
def xls_to_csv1(xls_filename, csv_filename):
wb = xlrd.open_workbook(xls_filename)
sh = wb.sheet_by_index(0)
with open(csv_filename,"wb") as fh:
csv_out = unicodecsv.writer(fh, encoding='utf-8', delimiter=';')
#print(sh.row_values(1)[3])
for row_number in range (1, sh.nrows):
row = []
count=0
for col in sh.row_values(row_number):
if count==3:
row.append(col)
count=count+1
csv_out.writerow(row)
xls_filename='Attachment_1_Test_Data_1_Seed.xlsx'
csv_filename='Summary_csv.csv'
xls_to_csv1(xls_filename,csv_filename)
将数据附加到csv文件的过程应在
with_语句中完成。这是因为通过所谓的。基本上,这意味着如果使用with_语句打开文件,则退出with_语句将关闭文件。这就是为什么您会看到关闭的文件
错误。应采取以下措施:
from __future__ import division, print_function
import sys
import numpy as np
import csv
import os
import xlrd
import csv
import unicodecsv
def xls_to_csv1(xls_filename, csv_filename):
wb = xlrd.open_workbook(xls_filename)
sh = wb.sheet_by_index(0)
with open(csv_filename,"wb") as fh:
csv_out = unicodecsv.writer(fh, encoding='utf-8', delimiter=';')
#print(sh.row_values(1)[3])
for row_number in range (1, sh.nrows):
row = []
count=0
for col in sh.row_values(row_number):
if count==3:
row.append(col)
count=count+1
csv_out.writerow(row)
我希望这会有所帮助。将数据附加到csv文件的过程应该在with_语句中完成。这是因为通过所谓的。基本上,这意味着如果使用with_语句打开文件,则退出with_语句将关闭文件。这就是为什么您会看到关闭的文件
错误。应采取以下措施:
from __future__ import division, print_function
import sys
import numpy as np
import csv
import os
import xlrd
import csv
import unicodecsv
def xls_to_csv1(xls_filename, csv_filename):
wb = xlrd.open_workbook(xls_filename)
sh = wb.sheet_by_index(0)
with open(csv_filename,"wb") as fh:
csv_out = unicodecsv.writer(fh, encoding='utf-8', delimiter=';')
#print(sh.row_values(1)[3])
for row_number in range (1, sh.nrows):
row = []
count=0
for col in sh.row_values(row_number):
if count==3:
row.append(col)
count=count+1
csv_out.writerow(row)
我希望这有帮助。代码不应该在任何版本的python中运行,因为Book
对象没有.split
方法。将wb=xlrd.open_工作簿(xls_文件名).split()
更改为wb=xlrd.open_工作簿(xls_文件名)
。但它在Python 2.7上运行。不管怎样,当我移除裂口时;它给出了一个令人惊讶的错误:ValueError:write to closed file
。但它是如何关闭的?我在“wb”模式下打开了它。(1)我非常确信您在问题中展示的代码在Python2.7中不起作用。如果您确实有在Python2.7中工作的代码,那么您可能没有将其正确地转录到这个问题中。(2) 你到底想用split
做什么?你说它在Python2.7中工作。当它工作时做了什么?@JohnY我的目标,正如我在问题中所说的,是隔离第四列,这样我就可以只把它保存在另一个文件中。为此,我使用split;否则,列不可隔离(我的意思是,print(sh.row_values(1)[3])
之类的语句不起作用,所以我认为这一定是问题所在,所以我使用了split)@JohnY无论如何,你可以忽略关于split的交易。从这位Abdou先生的回答来看,主要问题是完全不同的。因此,我想我将编辑这个问题,并从原始代码中删除.split()
。对于其他用户来说,这将是一个更有意义的问题。代码不应该在任何版本的python中运行,因为Book
对象没有.split
方法。将wb=xlrd.open_工作簿(xls_文件名).split()
更改为wb=xlrd.open_工作簿(xls_文件名)
。但它在Python 2.7上运行。不管怎样,当我移除裂口时;它给出了一个令人惊讶的错误:ValueError:write to closed file
。但它是如何关闭的?我在“wb”模式下打开了它。(1)我非常确信您在问题中展示的代码在Python2.7中不起作用。如果您确实有在Python2.7中工作的代码,那么您可能没有将其正确地转录到这个问题中。(2) 你到底想用split
做什么?你说它在Python2.7中工作。当它工作时做了什么?@JohnY我的目标,正如我在问题中所说的,是隔离第四列,这样我就可以只把它保存在另一个文件中。为此,我使用split;否则,列不可隔离(我的意思是,print(sh.row_values(1)[3])
之类的语句不起作用,所以我认为这一定是问题所在,所以我使用了split)@JohnY无论如何,你可以忽略关于split的交易。从这位Abdou先生的回答来看,主要问题是完全不同的。因此,我想我将编辑这个问题,并从原始代码中删除.split()
。那么对其他顾客来说,这将是一个更有意义的问题。