python打开文件后不关闭会怎么样_python“with open(file)”语句在编辑后不关闭文件...

我在windows上,想运行我的多线程python应用程序,以异步方式将数据保存到.csv。正如报告的here、here和here,我在某个时刻得到了以下错误:

Traceback (most recent call last):

File "results_path", line 422, in function

df_results.to_csv(results_file)

IOError: [Errno 24] Too many open files

This建议对每个文件IO操作包括with语句的修复:

^{pr2}$

但是,我仍然得到上面描述的IOError(简而言之,所有这些问题都没有解决我的问题)。因此,with-语句显然不能在append操作后正确关闭.csv文件。在

首先,我现在增加打开文件的数量。诚然,这只是推迟了坠机时间:import win32file

max_open_files = 2048 # Windows-specific threshold for max. open file count

win32file._setmaxstdio(max_open_files)

其次,我的临时方法是(A)连续检查打开的.csv文件,(B)如果打开的文件数接近windows允许的阈值,则强制重新启动整个脚本:from psutil import Process

import os, sys

proc = Process()

open_file_count = 0 # Set up count of open files

for open_file in proc.open_files(): # Iterate open files list

if ".csv" in str(open_file): # Is file of .csv type?

open_file_count += 1 # Count one up

else:

continue

else:

if open_file_count > (max_open_files / 2): # Threshold, see above

os.execl(sys.executable, sys.executable, *sys.argv) # Force restart

else:

pass

这种方法在很多方面都是丑陋和低效的(在每个迭代/线程中遍历所有打开的文件)。至少,这需要在不强制重新启动整个代码的情况下工作。在

Q1:如何在windows上使用python正确关闭.csv文件?

Q2:如果IO操作后关闭失败,如何一次强制关闭打开的所有.csv文件?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值