当前位置: 首页 > 面试题库 >

如何编写一个可以还原cwd的装饰器?

卞成荫
2023-03-14
问题内容

如何编写一个装饰器,将当前工作目录还原到调用装饰函数之前的目录?换句话说,如果在执行an的函数上使用装饰器,os.chdir()则调用该函数后cwd将不会更改。


问题答案:

path.py模块(如果在python脚本中处理路径,则应使用该模块)具有上下文管理器:

subdir = d / 'subdir' #subdir is a path object, in the path.py module
with subdir:
  # here current dir is subdir

#not anymore

(版权来自Roberto Alsina的这篇博客文章)



 类似资料:
  • 问题内容: 我不确定为什么跟随decorator [validate_request]无效。编写这种验证装饰器的正确方法是什么? 错误:- 应该如何以一种更加惯用的方式完成??? 问题答案: 这是你的装饰器的外观 你会这样称呼它

  • 问题内容: 问题 我希望某些观点仅适用于网站的高级用户。 在项目中的各种应用程序中如何使用此装饰器? 问题答案: 你不必为此编写自己的装饰器,就像中已经包含的那样。 还有一个扩展此装饰器的代码段(),该代码段非常适合你的用例。 而且,要(重新)使用装饰器,只需将装饰器放在路径中的模块中,即可从任何其他模块导入它。

  • 问题内容: 我有一堂课,他们的功能上有一个乏味的重复模式,我想把这种模式变成装饰器。但事实是,此装饰器必须访问当前实例的某些属性,因此我想将其转换为此类中的方法。我有一些问题。 因此,这类似于我想要的: (1)这是问题所在。我想使用该方法来装饰该方法。但是我不知道如何使用当前实例中的方法作为装饰器。 有没有简单的方法可以做到这一点? 编辑:好的,答案很明显。正如Sven所说的那样,装饰器本身只是在

  • 我需要在没有中间存储的情况下读写压缩(GZIP)流。目前,我使用Spring

  • 问题内容: 有没有办法在Python中将两个装饰器组合成一个新的装饰器? 我意识到我可以将多个装饰器应用于一个函数,但是我很好奇是否有一些简单的方法可以将两个装饰器组合成一个新的装饰器。 问题答案: 更一般一些: 然后 相当于

  • 我试图理解decorator是如何工作的,我想知道一个修饰过的函数是否可以访问decorator的变量。例如,在下面的代码中,如何使f1能够访问localVariable?这可能吗?这是一种很好的做事方式吗?