国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python和perl實現批量對目錄下電子書文件重命名的代碼分享

2019-11-25 18:05:08
字體:
來源:轉載
供稿:網友

經常會遇到下載的文件或電子書,名字中間都包含了一些網址信息,實際使用中由于名字太長不方便,下面的腳本使用正則表達式來對目錄下的所有文件重命名:
例如:

修改前:[武林網]Mac OS X for Unix Geeks[m.survivalescaperooms.com].mobi
修改后:Mac OS X for Unix Geeks.mobi

python代碼如下:

復制代碼 代碼如下:

import os
import re

def rename_dir(dir,regex,f):
  if not os.path.isdir(dir) or not os.path.exists(dir) :
    print("The input is not one directory or not exist.")
  for root,subdirs,files in os.walk(dir):
    for name in files:
      oldname = name         
      newname = re.sub(regex,f,name)
      print("Before : " + os.path.join(root,oldname))
      print("After  :  " + os.path.join(root,newname))
      if not name == newname and not os.path.exists(os.path.join(root,newname)):
        os.rename(os.path.join(root,oldname),os.path.join(root,newname))
    for dir in subdirs:
        rename_dir(os.path.join(root,dir))

rename_dir("C://Python31//test","/[.*/](.*)/[m.survivalescaperooms.com/](.*)",lambda m:m.group(1)+m.group(2))

用perl寫了下,感覺代碼也沒有少寫多少

復制代碼 代碼如下:

use strict;
use warnings;
use File::Find;

my $regex = "http://[.*//](.*)//[m.survivalescaperooms.com//](.*)";
# $replace doesn't work
my $replace = "/$1/$2";

sub wanted {
 my $name = $File::Find::name;
 if( -f $name){
   my $newname =$name;
   $newname =~ s/$regex/$1$2/;
   print "Before: $File::Find::name/n";
   print "After : $newname/n";
   if( !-e $newname) {
     rename($name, $newname);
   }
 }
}

sub rename_dir{
  my ($dir,) = @_;
  if (!-d $dir || !-e $dir){
    print"The input is not directory or not exist.";
  }
  find(/&wanted, $dir);
}
&rename_dir("c://perl//test");

perl 實現2

復制代碼 代碼如下:

use strict;
use warnings;

my $regex = "http://[.*//](.*)//[m.survivalescaperooms.com//](.*)";
# $replace doesn't work
my $replace = "/$1/$2";

sub rename_dir{
    my $dir = shift;
    if (!-d $dir || !-e $dir){
      print"The input is not directory or not exist.";
    }
    opendir(DIR, $dir) || die "Cannot opendir $dir.";
    foreach (readdir(DIR)) {
      if ($_ eq '.' || $_ eq '..') {next;}
      my $name = $dir.'/'.$_;
      if(-d $name){
        rename_dir($name);        
        next;
        }
      my $newname =$_;
      $newname =~ s/$regex/$1$2/;
      $newname = $dir.'/'.$newname;
      print "Before : $name/n";
      print "After  : $newname/n";
      rename($name,$newname);
    }
    #closedir(DIR);
}
&rename_dir("c://perl//test");

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中卫市| 独山县| 肇东市| 凤庆县| 平泉县| 永顺县| 石楼县| 巴林左旗| 夏河县| 上饶县| 凤翔县| 余江县| 平泉县| 佳木斯市| 英超| 嘉善县| 贵阳市| 天门市| 株洲县| 绩溪县| 霍林郭勒市| 麻城市| 达拉特旗| 甘肃省| 阜南县| 镇安县| 台南县| 沾化县| 琼中| 玉田县| 高青县| 东阿县| 准格尔旗| 洮南市| 凉山| 泰和县| 赫章县| 阿尔山市| 宜昌市| 宁夏| 阳高县|