2014-11-04 50 views
-3

我使用time()函數來計算曆元時間,並使用乘法因子和天數來查找它們之間的差異大於修改時間。如何根據修改時間大於2天刪除給定目錄下的所有文件和目錄

但是我無法獲取指定路徑下的列表fo文件和文件夾,以及如何刪除所有非目錄子目錄。

+1

在這裏,我們與另一個Python的Perl問題。 **請在這裏提問之前將您的問題提交給Google。 – MattDMo 2014-11-04 02:18:57

+0

可能的重複[如何在Perl中的目錄的內容中讀取?](http://stackoverflow.com/questions/22566/how-do-i-read-in-the-contents-of-a- directory-in-perl) – MattDMo 2014-11-04 02:22:43

+0

listdir()方法返回一個列表,其中包含路徑給出的目錄中的條目名稱。該列表以任意順序排列。它不包括特殊條目''。'和'..',即使它們存在於目錄中。 – 2014-11-04 02:25:35

回答

3

根據我從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類。
  • 封裝在Python OSError類中的異常可能不適用於捕獲Perl異常的人。
  • 更多?我不知道Python。

這本來是更好,如果你已經指定你真正想做的事,而說你想一些其他語言的功能等同,因爲

  • 具有恰好兩種語言的機會同樣的功能不太好,所以你讓我們猜猜你實際上想要什麼。
  • 你實際上可能已經搜索過。
1

你在正確的軌道上(儘管你粘貼的代碼段是非法的Perl,例如它沒有分號)。請記住,Perl只是在目錄中徘徊,包括特殊的「。」。和「..」條目,而os.listdir不(見文檔)。

當然,Perl是Perl,有多種方法可以做到這一點,例如,你可以使用像glob或File :: Find之類的東西。

相關問題