您好,如果我有以下代码:
n = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])
for i in range(0, n):
dat_file = r'C1/C10000' + str(i).zfill(2) + '.dat'
csv_file = r'C1_conv/C10000' + str(i).zfill(2) + '.csv'
in_dat = csv.reader(open(dat_file, 'rb'), delimiter = '\t')
out_csv = csv.writer(open(csv_file, 'wb'))
out_csv.writerows(in_dat)
我遇到的问题是,最后一个文件保持打开状态。 我尝试用in_dat.close()....关闭它,但已经读过它不可能,因为它是一个解析器。
我已经阅读了有关'with'的功能,但不知道如何把它放进去。 有人可以告诉我正确的代码吗?
谢谢:D
答案 0 :(得分:2)
您需要在单独的变量中跟踪打开的文件,并在完成写入操作后将其关闭。更好的约定是使用with open(fname)
语法,为您关闭文件。
您可以参考以下代码段,以更好的方式了解事情:
with open(infile, 'w') as datfile, open(outfile, 'w') as csvfile:
do_something()