Python ValueError对已关闭文件的I / O操作

时间:2015-12-02 10:38:50

标签: python csv pandas io

我知道这听起来是一个常见错误,已在stackoverflow上多次询问。但是,我很清楚我的问题是新的,因为我几乎阅读了相关的主题。

我有两个文件如下:

ALL_USER_PATH = 'all.csv'
NEW_USER_PATH = 'new.csv'

我打开“全部”文件以便先阅读

with open(ALL_USER_PATH, "r") as f:
    df = pd.read_csv(f) #pd is pandas
    f.close()

接下来,我删除了“新”文件的内容,并准备将新数据写入其中

if os.path.isfile(NEW_USER_PATH):
    os.remove(NEW_USER_PATH)

写入它并且工作正常

with open(NEW_USER_PATH, "a") as csv_n:
    #writer_n is to write new users
    writer_n = csv.writer(csv_n, delimiter=",", lineterminator='\n')
    for user in customer_records:         
        if checkExistence(df): # a method I wrote before
            continue
        else:    
            writer_n.writerow([data_to_be_written])

接下来,我删除“all”文件并向其写入新数据

if os.path.isfile(ALL_USER_PATH):
    os.remove(ALL_USER_PATH)

with open(ALL_USER_PATH, "a") as csv_a:
    writer_a = csv.writer(csv_n, delimiter=",", lineterminator='\n')

    for user in customer_records:
        writer_a.writerow([all_data_to_be_written])

错误

  

“关闭文件的ValueError i / o操作”

此处抛出

以将数据写入“all”文件的最后一行。我认为这是因为我之前打开过它,但我记得在读完数据后关闭它,不是吗?有人可以让我知道问题是什么吗?

1 个答案:

答案 0 :(得分:1)

我也遇到了这个错误,但发现了另一个问题并且答案很有效。

with open (csv file.csv) as csv:下面留下缩进的块后,它将关闭文件。

with open('ALL_USER_PATH','a') as csv_a:
    writer_a = csv.writer(csv_n, delimiter=",", lineterminator='\n')
    # Here the file stays open
# Here the file is closed

我希望我能帮到你。