如何删除shutil.rmtree中未使用的函数参数

时间:2017-11-15 19:54:37

标签: python pylint

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不会抱怨actionexc会抱怨

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作为参数的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的,您不能忽略with open('test.txt', 'a+') as f: f.write(r.content) # f.close() # it is redundant action,因为exc会将这些参数传递给回调。来自python docs

  

如果提供rmtree,则必须是可调用,接受 3   参数:onerrorfunctionpath

话虽如此,你还有几个选择:

  • 您可以使用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