Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
写入文件在Python 3.5中不起作用_Python - Fatal编程技术网

写入文件在Python 3.5中不起作用

写入文件在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

我编写了以下代码,以获取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_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()
。那么对其他顾客来说,这将是一个更有意义的问题。