icehack 发表于 2019-10-29 10:32

python代码实现文件名包含指定字符的替换或改名

本帖最后由 icehack 于 2019-10-29 10:39 编辑

下载论坛视频教程的文件名被打了广告,看起来很乱。自己用python写了个批量 替换改名的代码支持子目下的文件改名


import os

path=R'E:\Python 视频\Python语法基础和常用模块使用(四)【2019千锋Linux】(79集)'
fileList = os.listdir(path)
#要查找的字符串
strname = '千锋教育'
#替换后的字符串,为空则册除strname = '千锋教育'
newname =''
for root, dirs, files in os.walk(path, topdown=False):
    for name in files:
      if name.find(strname) != -1 :
            oldFileName = os.path.join(root, name)
            newFileName = os.path.join(root,name.replace(strname,newname))
            os.rename(oldFileName, newFileName)
print("替换完成)

psyzhl 发表于 2019-11-1 13:32

本帖最后由 psyzhl 于 2019-11-1 13:33 编辑

icehack 发表于 2019-10-29 14:10
sxyqlwb 发表于 2019-10-29 10:53
能批量修改文件夹的名称吗?看着好像只是文件名吧
root是路径,dirs 是 ...
import os
path=R'F:\Temp\1'
fileList = os.listdir(path)
#要查找的字符串
strname = '新建文件夹 - 副本'
#替换后的字符串,为空则删除strname = '新建文件夹 - 副本'
newname ='我要的文件夹名字'
for root, dirs, files in os.walk(path, topdown=False):
    for name in files:
      if name.find(strname) != -1 :
            oldFileName = os.path.join(root, name)
            newFileName = os.path.join(root,name.replace(strname,newname))
            os.rename(oldFileName, newFileName)
    for name in dirs:
      if name.find(strname) != -1:
            oldDirName = os.path.join(root, name)
            newDirName = os.path.join(root, name.replace(strname, newname))
            os.rename(oldDirName, newDirName)
print("替换完成")









请教大佬,是这样吧?
我运行成功了,不过感觉这样很生硬。
我不是程序员,完全生硬地照搬照抄您的内容,特别神奇特别厉害,但我总觉得我这个外行好像会被笑话的感觉。

人生中第一次学会如何运行python,感激不尽!

有些激动,语无伦次

好多年前就知道python,还看过视频,一直没学会,没成功运行过任何代码。今天偶尔看到你的贴子,找了一个ide,折腾了3个多小时,终于成功运行了您的代码。第一次,见笑见笑

然后又花了大概5分钟,弄出了这一段。这次虽然5分钟,但也是我第一次照猫画虎。

新建了二十个文件夹,然后把“新建文件夹- 副本”全部替换掉了,第一次感觉到了程序代码的力量!

对楼主感激不尽!

todd_52pojie 发表于 2019-10-29 11:31

@echo off
set /p str1= 请输入要替换的文件(文件夹)名字符串(可替换空格):
set /p str2= 请输入替换后的文件(文件夹)名字符串(去除则直接回车):
echo.
echo 正在修改文件(夹)名中,请稍候……
for /f "delims=" %%a in ('dir /s /b ^|sort /+65535') do (
                        if "%%~nxa" neq "%~nx0" (
                           set "file=%%a"
                           set "name=%%~na"
                           set "extension=%%~xa"
                           call set "name=%%name:%str1%=%str2%%%"
                           setlocal enabledelayedexpansion
                           ren "!file!" "!name!!extension!" 2>nul
                           endlocal
      )
    )
exit

sxyqlwb 发表于 2019-10-29 10:53

能批量修改文件夹的名称吗?看着好像只是文件名吧

icehack 发表于 2019-10-29 14:10

本帖最后由 icehack 于 2019-10-29 14:11 编辑

sxyqlwb 发表于 2019-10-29 10:53
能批量修改文件夹的名称吗?看着好像只是文件名吧
root是路径,dirs 是目录, files是文件,再加一个for 循环对   dirs 目录进行判断就支持对目录改名了

向往的歌 发表于 2019-10-29 21:10

怎样实现文件名包含指定字符的替换或改名啊???…………

icehack 发表于 2019-10-30 09:48

向往的歌 发表于 2019-10-29 21:10
怎样实现文件名包含指定字符的替换或改名啊???…………

我发的代码就是做这个事的

向往的歌 发表于 2019-10-30 11:30

icehack 发表于 2019-10-30 09:48
我发的代码就是做这个事的

亲,如何运行呢?

icehack 发表于 2019-11-1 13:52

psyzhl 发表于 2019-11-1 13:32
import os
path=R'F:\Temp\1'
fileList = os.listdir(path)


第一次发贴被你这么重视,我都不好意思 了我也是新手,以前是搞powerBuild的现在转学Python,边学边用于项目生产客户那也可以变现的,现在诱导我7岁的小孩也学习编程,用Ptyhon写作弊植物大战僵尸,用python作弊 黑暗黎明 这两款小孩喜欢玩的游戏,有兴趣才会有动力,多练多写我们都会成长的

psyzhl 发表于 2019-11-1 14:45

您的代码很厉害,至少是个入门学生的教学方面的大师。

廖雪峰等的教程我2.X看到3.X,云里雾里虽然很长时间但是也没看明白啥。一段代码都没成功。

您这个很切合我的实际,很有实用性,而且直观简单。

我在论坛等很多地方下载了很多批量文件,比如几千集的那种小说mp3等。

这个不仅是学习的好资料,还是我的工具了。

我发现可以同时搞定文件和文件夹。虽然如果懂程序代码有经验,可能觉得我这么样,是大惊小怪,少见多怪了。

同时查找文件和文件夹,同时替换名字或者去掉,仅仅需要几行代码,太神奇了。

而且这种安全感,这种代表时代的良心的感觉,很难得。

我资源特别多,也能找到特别多的软件,可是软件和资源多了,难免有很多特殊情况难以判断。

您这个代码解决了我的大问题,还重启了我学编程的意愿。

以后我多找些例子,多改多学,然后也写一些自己的。

今天终于知道一段纯python代码怎么执行了,哈哈。

页: [1] 2
查看完整版本: python代码实现文件名包含指定字符的替换或改名