【问题标题】:How to delete all files and directory under a given directory based on modification time greater than 2 days如何根据修改时间大于2天删除给定目录下的所有文件和目录
【发布时间】:2014-12-30 20:14:05
【问题描述】:

我正在使用 time() 函数来计算纪元时间,并使用与天数相乘的因子来发现它们之间的差异大于修改时间。

但是我无法获取指定路径下的文件和文件夹列表以及如何删除所有不为空的目录、子目录。

【问题讨论】:

  • 这里我们又遇到了另一个 Python 到 Perl 的问题。 在此处提问之前将您的问题输入 Google。
  • 方法 listdir() 返回一个列表,其中包含路径给定的目录中的条目名称。该列表是任意顺序的。它不包括特殊条目“。”和 '..' 即使它们存在于目录中。
  • @MattDMo 它在哪里说有关 perl 和 python 代码之间的问题的问题不在 SO 范围内?
  • 与什么同步?

标签: python perl


【解决方案1】:

根据我从 python 文档中读到的内容,以下内容不等价,但很接近:

do {
   opendir(my $dh, $path)
      or die("Can't open directory \"$path\": $!\n");

   my @files = grep !/^\.\.?\z/, readdir($dh);

   closedir($dh)
      or die("Error reading directory \"$path\": $!\n");

   @files
}

一些区别:

  • 实际上无法检查readdir 是否失败。
  • 抛出的错误信息不同。
  • 抛出的异常不会属于不存在的 OSError 类。
  • 捕获 Perl 异常的任何人都可能无法使用 Python OSError 类中包含的异常。
  • 更多?我不懂 Python。

如果你指定了你真正想做的事情会更好,而不是说你想要其他语言的功能,因为

  • 两种语言具有完全相同功能的可能性并不大,所以您让我们猜测您真正想要什么。
  • 您实际上可以搜索到那个。

【讨论】:

    【解决方案2】:

    您在正确的轨道上(尽管您粘贴的 sn-p 是非法的 Perl,例如它没有分号)。请记住,Perl 只是在目录中啜饮,包括特殊的“.”。和 ".." 条目,而 os.listdir 没有(请参阅文档)。

    当然,Perl 是 Perl,有不止一种方法可以做到这一点,例如您可以使用 glob 或 File::Find 之类的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2013-01-07
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      相关资源
      最近更新 更多