在this question中,提供了如何删除只读文件的答案。它非常有效,但需要使用未使用的参数。在this other question中,有人询问如何告知pylint多个非相邻参数未使用而未添加特定注释(例如,使用_
)。许多答案大约是" ZOMG YOU&E;设计错误"所以我答应我会举一个例子来说明需要这个并且不受我的控制。这是一个例子。
shutil.rmtree(self._temp_dir, onerror=del_rw)
def del_rw(action, name, exc):
os.chmod(name, stat.S_IWRITE)
os.remove(name)
"回答"因此,pylint不会抱怨action
而exc
会抱怨
shutil.rmtree(self._temp_dir, onerror=del_rw)
def del_rw(_action, name, _exc):
os.chmod(name, stat.S_IWRITE)
os.remove(name)
但新问题是,如何在没有_action
或_exc
作为参数的情况下执行此操作?
答案 0 :(得分:1)
正如评论中所讨论的,您不能忽略with open('test.txt', 'a+') as f:
f.write(r.content)
# f.close() # it is redundant
和action
,因为exc
会将这些参数传递给回调。来自python docs:
如果提供
rmtree
,则必须是可调用,接受 3 参数:onerror
,function
和path
。
话虽如此,你还有几个选择:
您可以使用excinfo
作为回调的前缀(请参阅pylint docs),将您的功能转换为:
cb_
您可以使用keyword arguments(您也可以使用shutil.rmtree(self._temp_dir, onerror=cb_del_rw)
def cb_del_rw(action, name, exc):
os.chmod(name, stat.S_IWRITE)
os.remove(name)
,但我觉得这种方法更具可读性):
*args