【发布时间】:2015-04-29 17:56:08
【问题描述】:
运行这个简单的脚本时,“output_file.csv”保持打开状态。我不确定在这种情况下如何关闭文件。
我查看了其他示例,其中 open() 函数被分配给诸如“f”之类的变量,并使用 f.close() 关闭对象。由于with / as csv-file,我不清楚文件对象的实际位置。有人介意从概念上解释断开连接的位置吗?理想情况下,想知道:
- 如何检查所有打开文件对象的命名空间
- 如何确定关闭这些对象的正确方法
读取数据列的简单脚本,其中第 1 列中的映射为空白,请填写
import csv
output_file = csv.writer(open('output_file.csv', 'w'))
csv.register_dialect('mydialect', doublequote=False, quotechar="'")
def csv_writer(data):
with open('output_file.csv',"ab") as csv_file:
writer = csv.writer(csv_file, delimiter=',', lineterminator='\r\n', dialect='mydialect')
writer.writerow(data)
D = [[]]
for line in open('inventory_skus.csv'):
clean_line = line.strip()
data_points = clean_line.split(',')
print data_points
D.append([line.strip().split(',')[0], line.strip().split(',')[1]])
D2 = D
for i in range(1, len(D)):
nr = D[i]
if D[i][0] == '':
D2[i][0] = D[i-1][0]
else:
D2[i] = D[i]
for line in range(1, len(D2)):
csv_writer(D2[line])
print D2[line]
【问题讨论】:
-
你在脚本顶部做了一个不必要的显式
open,你没有关闭它。那么为什么您对文件仍然处于打开状态感到惊讶呢? -
我最初尝试将 output_file.close() 放在最后,但出现此错误: output_file.close() AttributeError: '_csv.writer' object has no attribute 'close' 删除初始 output_file = csv.writer(open('output_file.csv', 'w')) 仍然导致文件保持打开状态
标签: python-2.7