鱼C论坛

 找回密码
 立即注册
查看: 9340|回复: 13

[已解决]Python 批量删除文件名字当中的某一些字符

[复制链接]
发表于 2016-6-17 23:41:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QQ20160617-0@2x.png

如图,买了一批教程,发现文件里面都有他们的广告,以至于看着很烦,想批量删除其中的某些特定字符。

才学Python,把小甲鱼的课程粗略的看了一遍,现在脑子里面有些乱,希望各位大神帮我看下我的思路,并提示我其中需要掌握的一些方法或是直接告诉我应该把小甲鱼的哪个课程再仔细看看。

我的大概思路是:

1、切换到需要遍历的文件夹, os.chdir()
2、遍历所有的文件名字,os.walk()
3、if 文件名字含有 [***] 字符,删掉 (我对字符串这一节掌握还不是很熟)

但是感觉写出来有点蒙圈啊!

求高手指点!
最佳答案
2016-6-18 18:30:22
我简单写了下修改文件名的代码,你参考一下:
  1. import os
  2. import os.path

  3. def rename(file, keyWord):
  4.     '''
  5.     :param file: 文件路径
  6.     :param keyWord: 需要修改的文件中所包含的关键字
  7.     :return:None
  8.     '''
  9.     os.chdir(file)
  10.     lt = os.listdir(file)
  11.     for f in lt:
  12.         if not os.path.isdir(f):
  13.             if keyWord in f:
  14.                 temp = f.replace(keyWord, '')
  15.                 os.renames(f, temp)
  16.         else:
  17.             rename(file + '\\' + f, keyWord)
  18.             os.chdir('..')

  19. rename('E:\\a', '123')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-18 15:01:42 | 显示全部楼层
http://bbs.fishc.com/thread-72074-1-1.html
这个帖子里我写了一个小程序,就支持批量重命名和批量删除文件,你可以看一下代码!
不懂,可以问我!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 15:08:51 | 显示全部楼层
WylLy 发表于 2016-6-18 15:01
http://bbs.fishc.com/thread-72074-1-1.html
这个帖子里我写了一个小程序,就支持批量重命名和批量删除文 ...

我只是想批量修改文件名中的一段内容。有联系方式么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-18 15:59:19 | 显示全部楼层
Kalvin 发表于 2016-6-18 15:08
我只是想批量修改文件名中的一段内容。有联系方式么?

你想怎么操作?就在帖子中说一下吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 16:37:52 | 显示全部楼层
WylLy 发表于 2016-6-18 15:59
你想怎么操作?就在帖子中说一下吧?

我想删除掉目录中所有名字为「极客学院」的文件夹。
另外文件名中包含的「【极客学院就业班报名客服QQ:2602575588  VIP充值请进入jkxy.taobao.com】」这一段文字。

就我上面的图片。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-18 18:30:22 | 显示全部楼层    本楼为最佳答案   
我简单写了下修改文件名的代码,你参考一下:
  1. import os
  2. import os.path

  3. def rename(file, keyWord):
  4.     '''
  5.     :param file: 文件路径
  6.     :param keyWord: 需要修改的文件中所包含的关键字
  7.     :return:None
  8.     '''
  9.     os.chdir(file)
  10.     lt = os.listdir(file)
  11.     for f in lt:
  12.         if not os.path.isdir(f):
  13.             if keyWord in f:
  14.                 temp = f.replace(keyWord, '')
  15.                 os.renames(f, temp)
  16.         else:
  17.             rename(file + '\\' + f, keyWord)
  18.             os.chdir('..')

  19. rename('E:\\a', '123')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 19:42:52 | 显示全部楼层
WylLy 发表于 2016-6-18 18:30
我简单写了下修改文件名的代码,你参考一下:

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/Kalvin/Study/Programming/PycharmProjects/鱼C_Python/file.py
Traceback (most recent call last):
  File "/Users/Kalvin/Study/Programming/PycharmProjects/鱼C_Python/file.py", line 22, in <module>
    rename('//Volumes//My Passport//极客学院教程','【极客学院就业班报名客服QQ:2602575588  VIP充值请进入jkxy.taobao.com】')
  File "/Users/Kalvin/Study/Programming/PycharmProjects/鱼C_Python/file.py", line 14, in rename
    if not os.path.isdir(f):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/genericpath.py", line 42, in isdir
    st = os.stat(s)
TypeError: argument should be string, bytes or integer, not tuple

Process finished with exit code 1


我没传进去tuple,怎么报错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 19:48:00 | 显示全部楼层
WylLy 发表于 2016-6-18 18:30
我简单写了下修改文件名的代码,你参考一下:

噢,遍历出来是tuple,我查下怎么转。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 21:11:53 | 显示全部楼层
WylLy 发表于 2016-6-18 18:30
我简单写了下修改文件名的代码,你参考一下:

另外,还有一个问题。
lt = os.listdir(file)

os.listdir() 是只遍历当前目录下的文件和文件夹啊,全部遍历出来是 os.walk() 不是么?

os.walk() 之后,是出来一个tuple,怎么转成 str 呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-18 21:21:16 | 显示全部楼层
Kalvin 发表于 2016-6-18 21:11
另外,还有一个问题。
lt = os.listdir(file)

你看一下我写的代码,我使用的是递归。
你如果使用:
  1. os.walk()
复制代码

想要变成list,那么可以写成:
  1. re = os.walk('C:\\')
  2. lt = []
  3. for i in re:
  4.     lt.append(i[2])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 21:43:57 | 显示全部楼层
WylLy 发表于 2016-6-18 21:21
你看一下我写的代码,我使用的是递归。
你如果使用:

我再重新看下小甲鱼的课程吧。

我在 mac 下运行出错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 21:45:30 | 显示全部楼层
WylLy 发表于 2016-6-18 21:21
你看一下我写的代码,我使用的是递归。
你如果使用:

改了个 / ,搞定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 21:48:51 | 显示全部楼层
Kalvin 发表于 2016-6-18 21:43
我再重新看下小甲鱼的课程吧。

我在 mac 下运行出错。

确实是屌,能加个微信或Q吗?想请教下你,当然你也有自己的事情,我发个红包感谢你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 03:01:40 | 显示全部楼层
WylLy 发表于 2016-6-18 18:30
我简单写了下修改文件名的代码,你参考一下:

感谢你的代码, 我的文件中有[],不知如何修改,使得keyword可以认可,[dd]29-Feb-2020.xlsx;2-Feb-2020[4672239_v1] 感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 12:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表