Kalvin 发表于 2016-6-17 23:41:01

Python 批量删除文件名字当中的某一些字符



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

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

我的大概思路是:

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

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

求高手指点!

WylLy 发表于 2016-6-18 15:01:42

http://bbs.fishc.com/thread-72074-1-1.html
这个帖子里我写了一个小程序,就支持批量重命名和批量删除文件,你可以看一下代码!
不懂,可以问我!

Kalvin 发表于 2016-6-18 15:08:51

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

我只是想批量修改文件名中的一段内容。有联系方式么?

WylLy 发表于 2016-6-18 15:59:19

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

你想怎么操作?就在帖子中说一下吧?

Kalvin 发表于 2016-6-18 16:37:52

WylLy 发表于 2016-6-18 15:59
你想怎么操作?就在帖子中说一下吧?

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

就我上面的图片。

WylLy 发表于 2016-6-18 18:30:22

我简单写了下修改文件名的代码,你参考一下:
import os
import os.path

def rename(file, keyWord):
    '''
    :param file: 文件路径
    :param keyWord: 需要修改的文件中所包含的关键字
    :return:None
    '''
    os.chdir(file)
    lt = os.listdir(file)
    for f in lt:
      if not os.path.isdir(f):
            if keyWord in f:
                temp = f.replace(keyWord, '')
                os.renames(f, temp)
      else:
            rename(file + '\\' + f, keyWord)
            os.chdir('..')

rename('E:\\a', '123')

Kalvin 发表于 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:2602575588VIP充值请进入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,怎么报错?

Kalvin 发表于 2016-6-18 19:48:00

WylLy 发表于 2016-6-18 18:30
我简单写了下修改文件名的代码,你参考一下:

噢,遍历出来是tuple,我查下怎么转。

Kalvin 发表于 2016-6-18 21:11:53

WylLy 发表于 2016-6-18 18:30
我简单写了下修改文件名的代码,你参考一下:

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

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

os.walk() 之后,是出来一个tuple,怎么转成 str 呢?

WylLy 发表于 2016-6-18 21:21:16

Kalvin 发表于 2016-6-18 21:11
另外,还有一个问题。
lt = os.listdir(file)



你看一下我写的代码,我使用的是递归。
你如果使用:
os.walk()
想要变成list,那么可以写成:
re = os.walk('C:\\')
lt = []
for i in re:
    lt.append(i)

Kalvin 发表于 2016-6-18 21:43:57

WylLy 发表于 2016-6-18 21:21
你看一下我写的代码,我使用的是递归。
你如果使用:



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

我在 mac 下运行出错。

Kalvin 发表于 2016-6-18 21:45:30

WylLy 发表于 2016-6-18 21:21
你看一下我写的代码,我使用的是递归。
你如果使用:



改了个 / ,搞定。

Kalvin 发表于 2016-6-18 21:48:51

Kalvin 发表于 2016-6-18 21:43
我再重新看下小甲鱼的课程吧。

我在 mac 下运行出错。

确实是屌,能加个微信或Q吗?想请教下你,当然你也有自己的事情,我发个红包感谢你!

musicdwh 发表于 2020-4-13 03:01:40

WylLy 发表于 2016-6-18 18:30
我简单写了下修改文件名的代码,你参考一下:

感谢你的代码, 我的文件中有[],不知如何修改,使得keyword可以认可,29-Feb-2020.xlsx;2-Feb-2020 感谢
页: [1]
查看完整版本: Python 批量删除文件名字当中的某一些字符