批量修改文件名(python)

任务:

1、打开和程序同一目录下的名为“配置.txt”的文件夹

“配置.txt”构成如下
    第一行:一个绝对路径,如"D:\PPT模板"
    第二行~第n行:每行一行文字,如“www.baidu.com”,“北京XX大学”这样的串,每行一个

2、把第一行的绝对路径下的所有文件名处理一下,删除和“ 第二行~第n行”指定文字匹配的内容

如,原来文件名"D:\[PPT模板\北京XX大学logo.png"
更改后文件名“D:\PPT模板\logo.png”,其中在“配置.txt”中指定的“北京XX大学”删掉。

提交:
python源码
exe文件,双击直接实现功能
 

代码:

f = open("D:\\Python\\Lib\\peizhi.txt", "w")
f.write("D:\\xiugai\nwww.baidu.com\n北京XX大学\nwww.hao123.com\n")
f.close()



import os
path = "D:\\xiugai"
f = open("D:\\Python\\Lib\\peizhi.txt","r")

files = os.listdir(path)
next(f)
for line in f:
  #print(line)
  for file in files:
    old = path + os.sep + file
    #print(file)
    #print(line)
    new = path + os.sep + file.replace(line,'')
    os.rename(old,new)
f.close()

第一次写时 发现replace不了 后来才知道line遍历时 会把字符串后面的‘\n’带进去导致在配对时对应不上从而不能修改。

因此:加入lines = f.read().splitlines()   把字符串后的“\n”   去掉

而且应该是根据已有的配置.txt来修改,不用重新写

于是:

import os
path = "D:\\xiugai"
f = open("D:\\Python\\Lib\\peizhi.txt","r")
next(f)
lines = f.read().splitlines()
files = os.listdir(path)
for line in lines:
  #print(line)
  for file in files:
    old = path + os.sep + file
    print(file)
    print(line)
    new = path + os.sep + file.replace(line,'')
    os.rename(old,new)
f.close()

但是文件名若有多个关键词需要修改,一次只能删一个

最终代码:

import os
f = open("配置.txt","r",encoding='UTF-8')
lines = f.read().splitlines()
path =str(lines[0])
#print(lines[0])
files = os.listdir(path)
for line in lines:
    files = os.listdir(path)
    for file in files:
        old = path + os.sep + file
        new = path + os.sep + file.replace(line,'')
        os.rename(old,new)
f.close()

在两个for语句之间再加一句   files = os.listdir(path)

就是在每次循环后重新读取文件的名字,然后接着配对修改即可。

生成exe:

在pycharm里下载好Pyinstaller这个库,然后打开终端(alt+F12

输入pip install pyinstaller 即可安装

然后再在终端输入 pyinstaller -F xxxx.py(xxxx.py为你的脚本名字)

刚开始我按网上的 pyinstaller -F -w xxxx.py  发现exe报错无法打开

后面百度把-w去掉即可。

最后把配置.txt  exe文件和源码放一起即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值