需求描述
今天朋友找我说她要修改某个文件夹中的所有文件名,在文件名前面加一个日期,问我能不能实现?其实so easy!!
项目实现
项目目标
批量修改某个文件夹中的所有文件的文件名,在文件名前面加上一个日期。
工具介绍
os模块(该模块常用来对本地文件的操作)、
python3.6(python3其他版本也可以)、
pycharm2019(其他版本或者其他编辑器都可以)、
pyinstaller模块(由于对方电脑没有安装编辑器和python环境,需要打包)
功能点剖析
要修改文件的名称,我们常规的步骤就是打开文件夹>>找到文件>>修改文件名。
同理,我们使用python来完成这一个操作也是一样的,找到文件夹,读取文件夹中的所有文件名,然后修改文件名,具体的功能点如下:
1)读取文件夹下的所有文件【os.listdir(path)】
2)重命名所有文件名【os.rename(oldname,newname)】
3)python文件打包(脱机使用必备~)【pyinstaller】
明确了功能点之后,可以先百度搜一搜相关的方法。
多搜一搜,度娘会乐意帮忙的~~
代码实现
接下来来看看怎么实现代码。
1)读取文件夹下的所有文件【os.listdir(path)】
import os
path = input('输入文件名所在的路径')
oldnames = os.listdir(path) # 读取文件夹下的所有文件
print('共有%s个文件:%s' % (len(oldnames),oldnames)) # 打印看看
下面来看看我的文件测试:
文件夹里的内容(这里我直接使用几个文本文件做测试,使用图片也是可以的)
运行结果如下:
好了,第一步成功!!
2)重命名所有文件名【os.rename(oldname,newname)】
接下来看看第2步重命名。
要对每一个文件单独命名,那就需要拿到每一个文件名。我们刚刚在第一步的时候,不知道你有没有发现:os.listdir(path)返回的是一个列表。那么拿到文件名就轻松了,直接使用for循环遍历即可!
遍历拿到文件名之后,还没完,拿到之后如果直接使用os.rename(oldname,newname),会报错系统找不到文件。
这个时候,我们要传入oldname和newname的绝对路径,这样才可以获取到文件(方法一);
当然啦,还有一个方法!系统找不到文件是因为你执行程序的路径和这些文件所在的路径不是同一个,所以直接使用文件名(就是相对路径)系统就会找不到,也可以使用os.chdir(path),把工作目录改到我们输入的path文件夹下,这样就可以直接使用文件名了。(方法二)
好了,下面来看看完整的代码:
方法一:
import os
path = input('输入文件所在的路径')
date = input('请输入日期(文件名前加日期),如0520')
oldnames = os.listdir(path)
print('共有%s个文件:%s' % (len(oldnames),oldnames))
for oldname in oldnames:
newname = path+'/'+ date + oldname # 拼接绝对路径:路径+文件名
oldname = path+'/'+oldname # 拼接绝对路径:路径+文件名
os.rename(oldname,newname)
print(oldname,'>>>>',newname)
方法二:
import os
path = input('输入文件所在的路径')
date = input('请输入日期(文件名前加日期),如0520')
os.chdir(path) # 切换工作路径到文件所在的文件夹下
oldnames = os.listdir(path)
print('共有%s个文件:%s' % (len(oldnames),oldnames))
for oldname in oldnames:
newname = date + oldname # 拼接新路径,加上日期
os.rename(oldname,newname)
print(oldname,'>>>>',newname)
这里使用方法二来展示一下结果:
第二步也成功了!大家可以根据自己的喜欢挑一种方法实现~
完成了代码的编辑之后,开开心心的把代码发给朋友,结果发现,她现在的电脑没有安装python环境和编辑器!跑不了代码!
那就打包一下来跑代码吧~下面来打包一下。
3)python文件打包(脱机使用必备~)【pyinstaller】
在刚刚方法一的代码上,做了一点补充:
import os,time
path = input('输入文件所在的路径')
date = input('请输入日期(文件名前加日期),如0520')
oldnames = os.listdir(path)
print('共有%s个文件:%s' % (len(oldnames),oldnames))
i = 0
for oldname in oldnames:
newname = path+'/'+ date + oldname
oldname = path+'/'+oldname
os.rename(oldname,newname)
print(oldname,'>>>>',newname)
i += 1
print('共完成%s个文件的重命名' % i)
time.sleep(5) # 停留5秒方便查看打包完程序的运行结果
打包之前,如果没有pyinstaller模块,需要先安装一下,打开cmd,输入一下命令进行安装
pip install pyinstaller
打开cmd方法:快捷键:win+r,然后输入cmd,回车。
下面开始来打包文件
在cmd中,先切换路径:
切换盘符:对应盘符+英文冒号
切换路径:cd+一个空格+文件所在文件夹的绝对路径
输完回车就可以切换成功!
比如:我的python文件是放在G盘的G:\学习python\项目\课程测试文件夹下,所以使用以下的命令进行切换:
最后输入以下命令等待完成打包:
pyinstaller -F [文件名]
比如:我使用的文件名是批量文件改名.py,所以使用以下的命令进行打包:
pyinstaller -F 批量文件改名.py
再补充一点知识:
-F, –one-file打包成一个exe文件,这个是单个文件
-D, –one-dir打包成一个文件夹(多文件),默认
-w, –windowed, –noconsole无视窗,程序后台运行
-c, –console, –nowindowed提供程序视窗,程序有输入输出的界面,默认
更多相关的命令可以在cmd中输入以下命令进行查看:
pyinstaller -h
因为这一个代码需要用户在终端输入路径和日期,所以这里需要一个程序视窗,所以使用默认视窗。小程序,直接使用单文件即可,最终生成的可执行文件截图如下:
ps:>_< 上传不了可执行文件,就这样吧~需要执行生成。
感兴趣的同学赶紧上手操作一下吧!!
IS ALL,TKS!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66995.html