【问题标题】:cant close last opened file无法关闭上次打开的文件
【发布时间】:2016-07-12 12:21:56
【问题描述】:

您好,如果我有以下代码:

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

【问题讨论】:

    标签: python csv parsing


    【解决方案1】:

    您需要在单独的变量中跟踪打开的文件,并在完成写入操作后关闭它。更好的约定是使用with open(fname) 语法,它会为您关闭文件。

    您可以参考以下代码 sn-p 以更好地理解事物:

    with open(infile, 'w') as datfile, open(outfile, 'w') as csvfile:
           do_something()
    

    【讨论】:

      猜你喜欢
      • 2016-03-11
      • 2019-07-03
      • 2015-02-14
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多