Python 更改文件夹,文件名等操作实现将文件夹中的文件上移一层
用慕课下载器下载完视屏后,所有的文件全部都单独在各自文件夹中,想到看的时候要换文件夹就觉得脑壳疼,于是用 Python 写代码把文件移出来
- 先将各个章节文件夹下的各个文件夹改名,方便后面读取
# 将文件夹改名为递增的数字
import os
path = 'G:\\慕课下载器\\学无止下载器-v1.5.0\\Download\\高分必备-20小时精通高数上\\{1}--课程\\' # 文件路径,路径上的所有 \ 均要写两个,一定要在最后加上 \\
dirs = os.listdir(path) # 获取当前路径下的所有文件
count = 1 # 用这个给文件夹起名,方便后面遍历
for i in dirs: # 遍历所有当前路径下的文件
print(i)
absolutepath = path + i # 踩坑:os.listdir(0)得到的 list 中的文件名不能直接用于os.path.isdir()、os.path.isfile()
if os.path.isdir(absolutepath): # os.path.isdir(path),path只能是绝对路径
oldname = path + i
newname = path + str(count)
os.rename(oldname, newname)
print("%s====>>>%s" % (oldname, newname))
count += 1
-
从总目录到视屏文件有两层文件夹,接下来的步骤可以写两层循环,我自己只写了一层
# 在上面已经改好的数字名文件中去把所有文件上移一层 # 其实就是改名的操作 import os path = 'G:\\慕课下载器\\学无止下载器-v1.5.0\\Download\\高分必备-20小时精通高数上\\{1}--课程\\4\\' # 文件路径,因为只写了一层,要想将所有单元的文件全部一出来就得手动改最后一个路径 dirs = os.listdir(path) # 获取当前路径下的所有文件,得到的是文件夹 count = 1 for i in dirs: # 遍历所有当前路径下的文件 print(i) absolutepath = path + i + "\\" # 加上两个 \ 为了后面能够直接将文件名加到最后形成完整的路径 if os.path.isdir(absolutepath): list = os.listdir(absolutepath) for j in list: oldname = absolutepath + j newname = path + j os.rename(oldname, newname) print("%s====>>>%s" % (oldname, newname)) count += 1
-
到这里就已经完成了我最初的目的了。以下是顺带记录一下
-
写完发现原来的文件夹还在,,,,来加一个删除文件夹的
# 目的是删除空文件夹 import os path = 'G:\\慕课下载器\\学无止下载器-v1.5.0\\Download\\高分必备-20小时精通高数上\\{1}--课程\\4\\' # 指定路径 dirs = os.listdir(path) # 遍历指定路径下的所有文件 # 判断是文件还是文件夹,文件夹则判断是否为空,删除空文件夹 for i in dirs: if os.path.isdir(path + i): # 判断是否为文件夹 if not os.listdir(path + i): # 判断是否为空 os.removedirs(path+i) #该命令只能删除空目录 # shutil.rmtree(path + i) # 该命令可递归删除文件夹,慎用!!该文件夹和文件夹里面所有内容会被删除. print("%s目录 已删除" % i) # else: # 如果不是文件夹,则为文件 # os.remove(path + i) # 该命令删除文件 # print("%s文件 已删除" % i)
-
批量更改文件名、文件后缀
import os import re path = 'G:\\PythonFile\\PythonFile\\11\\' # 文件路径 dirs = os.listdir(path) # 获取当前路径下是所有文件 for i in dirs: # 遍历所有当前路径下的文件 fname = re.findall('(.*)\.', i) type = re.findall('(\..*)', i) # fname和type分别获取了当前路径下文件的文件名和文件格式 newfname = (" ").join(fname) #想改文件名在这里 newtype = ("").join(".txt") #改文件后缀在这里 # *re.findall*获取出来的是列表,修改文件名时候会报错,用join函数将他们转换为字符串 oldname = path + i # 原来文件的名称 (路径 + 文件名) newname = path + newfname + newtype #(路径 + (新名称) + 文件格式) os.rename(oldname, newname) # os模块的rename函数 修改名字(旧名字,新名字) print("%s====>>>%s" % (oldname, newname))
-