Python实例31[批量对目录下文件重命名]

经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:
例如:

修改前:[大家网]Mac OS X for Unix Geeks[www.TopSage.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","\[.*\](.*)\[www.TopSage.com\](.*)",lambda m:m.group(1)+m.group(2))

Python实例31[批量对目录下文件重命名]

时间: 2024-12-16 20:58:23

Python实例31[批量对目录下文件重命名]的相关文章

Linux下文件重命名、创建、删除、修改及保存文件

一.重命名(更名) linux 给文件改名的命令是mv命令 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. 格式mv [options] 源文件或目录 目标文件或目录.主要参数[options]-i:交互方式操作.如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件. -f:禁止交互操作.mv操作要覆盖某个已有的目标文件时不给任何指示,指定

批量编译目录下文件的Makefile

1.多C文件生成各自可执行文件的Makefile如果一个目录下有很多C文件,且每个C文件都能生成一个独立的可执行文件,那么想全编译这些C文件并生成各作的可执行文件,在该目录下编写一个Makefile文件,就能做到时. #定义所需变量C = gccCFLAGS = -Wall -O -g -o #编译链接-oSRCS =$(wildcard *.c)OBJS =$(patsubst %.c,%,$(SRCS)).PHONY:all cleanall:$(OBJS)%:%.c        $(CC

linux 下文件重命名/移动/复制命令(转)

linux下重命名文件:使用mv命令就可以了, 例:要把名为:abc   重命名为:123 可以这样操作: 重命名:MV命令 1.进入你的文件目录,运行命令:   /cd  dir  (dir指的是你文件所在目录) 2.然后命令:ls (例出你的所有文件夹),我们可以看到有  abc 这个文件了 3.最后命令:mv abc 123 但是要注意的是,如果当前目录下也有个123的文件的话,我们的这个文件是会将它覆盖的. 拷贝复制:CP命令 例:我要把 abc文件复制到 语法: cp [选项] /x/

python递归删除目录本身以及目录下文件

import os def local_rm(dirpath): if os.path.exists(dirpath): files = os.listdir(dirpath) for file in files: filepath = os.path.join(dirpath, file).replace("\\",'/') if os.path.isdir(filepath): local_rm(filepath) else: os.remove(filepath) os.rmdi

PHP 文件夹下文件重命名 把文件排序打散

$dir1 = '/Volumes/UMUSIC/'; $filearr = scandir($dir1); unset($filearr[0]); unset($filearr[1]); // unset($filearr[177]); $filearr = array_values($filearr); // dd($filearr); foreach ($filearr as $v) { if(is_dir($dir1 . $v)){ continue; } if(strpos($v,'.

Perl获取目录下文件或者包含子目录下文件

1 my $dir = "D:\\My_Work\\Temp"; 2 my @files = (); 3 4 #获取给定目录下文件 5 @files = get_dir_files($dir); 6 7 #获取给定目录以及子目录下文件 8 @files = get_dir_files_x($dir); 9 10 #获取目录下以及子目录下文件,返回的结果中包含路径 11 sub get_dir_files_x{ 12 my ($dir_p) = @_; 13 my @files = ()

python实例31[列出目录下所有的文件到txt]

代码: (使用os.listdir) import os def ListFilesToTxt(dir,file,wildcard,recursion):    exts = wildcard.split(" ")    files = os.listdir(dir)    for name in files:        fullname=os.path.join(dir,name)        if(os.path.isdir(fullname) & recursion

linux 目录下文件批量植入和删除

linux目录下文件批量植入 [[email protected] http2]# find /usr/local/http2/htdocs/ -type f|xargs sed -i "1  i <script>alert(1)</script>" 其中上面的1 为文件的第一行 i为植入 批量删除: [[email protected] ~]# find /usr/local/http2/htdocs/ -type f|xargs sed -i '/<s

python生成器 获取 目录下文件

# os.walk()和os.list 都是得到所有文件的列表, 如果目录下文件特别多, 上亿了, 我们就需要生成器的方式获取 # 要求目录下面没有目录, 会递归到子目录下面找文件, (如果有子目录可以在下面代码基础上做修改) def gen_file(path, per_file_count): # 目录和一次想要回去的文件数量 i = 0 scandir_it = scandir(path) # 递归获取目录下文件, 返回迭代器 while True: try: entry = next(s