我正在尝试使用pylabels为即将到来的事件创建名称标签。在代码的一部分中,有一个tid位:
with open(os.path.join(base_path, "names.txt")) as names:
sheet.add_labels(name.strip() for name in names)
其中CCD_ 1。因此,本质上,这将加载"names.txt"的每一行,并使用"specs"中的规范调用函数"write_name",并将每个名称添加到唯一的标签中。我正试图将此代码更改为以下代码:
with text_file[["Name"]] as names:
sheet.add_labels(name.strip() for name in names)
但我得到了这个错误:
Traceback (most recent call last):
File "sticker.V.7.py", line 173, in <module>
with text_file[["Name"]] as names:
AttributeError: __exit__
有人能帮我理解退出在这种情况下意味着什么吗?我不理解其他意见书。
我希望添加这个子集方面,这样我就可以在名称标签中添加更多的细节。
我正在使用Python3.5
有人能帮我理解
__exit__
在这种情况下的含义吗?我不理解其他提交的材料。。。由于text_file
不是一个函数,所以它应该是可存在的。
使用with
语句上下文管理器时,该对象必须定义以下两种方法:
__enter__
__exit__
无论text_file[["Name"]]
是什么(看起来是Pandas DataFrame(,它都不实现这两种方法。正如回溯所示,它根本没有定义__enter__
,所以执行就在那里停止并引发异常。
我认为没有必要使用DataFrame作为上下文管理器。一个典型的用例是,您希望确保在with
块的末尾发生一些事情,即关闭文件流。(就像sheet = labels.Sheet(specs, write_name, border=True)
0/finally
块一样——你需要确保__exit__
被无条件调用。(对于Pandas DataFrame,我不确定是否有任何类比需要使用这两个dunder方法。