批量创建文件
python 实现批量创建文件
如果我想批量生成文件需要怎么操作
import os
## 假设我要新建10个 txt文件,使用for循环创建
for i in range(10):
##这里的d:\\py_newfile/,指的是文件的路径,也可以使用./ 代表当前文件夹,%i表示文件的名称,a表示没有该文件就新建
f=open('D:\\py_newfile/%s'%i+'.html',"a") #.html 表示的是生成的文件格式
f.write("") # """写入文件,空"""
f.close() #执行完结束
批量创建文件夹
使用python的os模块
1.os.path.exists(path):判断文件是否存在
2. os.makedirs(path+dirname):创建文件夹 路径+名称
接下来我们批量创建10个文件夹
import os #导入模块
path = 'D:\\dir/' #设置创建后文件夹存放的位置
for i in range(10):
#定义一个变量判断文件是否存在 ,path 指代路径,str(i)指代文件夹的名字
isExists= os.path.exists(path+str(i))
if not isExists: #判断如果文件不存在,则创建
os.makedirs(path+str(i))
print("%s 目录创建成功"%i)
else:
print("%s 目录已经存在"%i)
continue #如果文件不存在,则继续上述操作,直到循环结束
已经在对应的D:\dir/目录下生成了文件夹
批量修改文件名称
使用python 的 os 模块
- os.listdir(dir): 获取指定目录下的文件名称
- os.rename(oldfile,newfile): 修改文件名字
- re.findall(): 这里需要用到正则表达式 匹配需要的关键字
- os.path.isdir(path) : 判断该文件是否文件夹
import os
import re #导入模块
path ='D:\\11/' #获取需要处理的指定路径
dirs=os.listdir(path) #获取当前路径下的所有文件
c=0 #我通过计数重新给他按顺序命名
for i in dirs: #遍历当前路径下的文件
c +=1
if os.path.isdir(i): #判断文件类型,如果是文件夹,就pass跳过
pass
else:
fname=re.findall('(.*)\.',i)
print(type(fname))
ftype =re.findall('(\..*)',i)
# newI 和type 分别获取当前路径下文件的文件名和文件格式
newname=(" ").join(fname) #将list格式的文件名转换为字符串类型
newtype=(" ").join(ftype) #将list格式的文件类型转换为字符串类型
print(type(newname))
print(newname,'\n',newtype) #测试输出文件的文件名和文件类型
# *re.findall* 获取出来的文件是列表,若列表在路径中国,修改文件名时候会报错
# 所以这里用join函数将他们转换为字符串
oldname =path +i # 原来的文件名称(路径+文件名)
newname = path +newname +newtype #(路径+(新名称)+文件个数) 在这个修改要重新命名的规则
try: #如果存在异常则跳过,输出错误
os.rename(oldname,newname) #os模块的rename 函数 修改名字(旧名字,新名字)
except:
print("文件名重复,请重新输入")
print("%s======>>>>%s"%(oldname,newname))
针对文件进行批量创建文件夹并将文件移动至所生成的文件夹下,进行重命名操作
- 需要使用文件包 os 判断文件是否存在,读取文件列表
- 需要使用文件包 re 对文件进行读操作,进行文件的重命名
- 需要使用文件包shutil 对文件进行复制,移动操作
用法:shutil.copy(source,destination,*,follow_symlinks=Ture)
参数:
source:代表源文件路径的字符串——需要修改的文件路径
destination:代表目标文件或目录路径的字符串——修改后的的路径包括文件名
follow_symlink(可选): 此参数的默认值为True,如果为False,并且source表示符号链接,则目标将创建为符合链接。
Note:参数列表中的 “*” 表示以下所有参数(此处为“follow_symlinks”)仅是关键字参数,可以使用其名称(而不是位置参数)来提供
返回类型:此方法返回一个表示新创建文件路径的字符串。
import os
import re
import shutil
path = 'D:\\befor/' #指定需要处理文件的路径
path_save= "D:\\afterdir/" #指定存放路径
dirs=os.listdir(path) #获取当前路径下的所有文件
def file_rename(path,filename): ##文件重命名函数
# print(path) #打印文件路径
file_list=os.listdir(path) #获取当前路径下所有文件
# print(file_list)
for i in file_list:
if os.path.isdir(i):
pass
else:
old_filename=re.findall('(.*)\.',i) #获取文件名
file_type=re.findall("(\..*)",i) #获取文件类型
old_filename=(" ").join(old_filename) #使用join函数将列表转换为字符串
new_type = (" ").join(file_type) #使用join函数将列表转换为字符串
old_filepath=path+'/'+old_filename+new_type
new_filename = path + "/1" + new_type #设置新文件名为1.文件类型
os.rename(old_filepath,new_filename) #对文件进行重命名
"""# print('新的文件名包括路径:'.format(new_filename))
# print(new_filename)
# print('old_filename:{} file_type:{}'.format(old_filename,new_type))
# print('old_filename:'+ old_filename) """"
for i in dirs: #遍历当前路径下的文件
if os.path.isdir(i):
pass
else:
fname=re.findall('(.*)\.',i)
type1 =re.findall('(\..*)',i)
# newI 和type 分别获取当前路径下文件的文件名和文件格式
fname=(" ").join(fname)
type1=(" ").join(type1)
#将取出的列表 转换为字符串的形式
from_path=path+fname+type1
newfilename=path_save+"1"+type1 #新的文件名
isExists = os.path.exists(path_save + fname) #判断保存路径下是否存在要创建的文件夹
if type1 =='.jpg': #指定需要修改的类型的文件
if not isExists: # 判断如果文件不存在,则创建
os.makedirs(path_save + fname)
print("%s 目录创建成功" %fname)
shutil.copy(from_path,path_save+fname) #对应将需要创建文件夹的文件,复制到所生成的目录下
try:
file_rename(path_save+fname,fname) #调用重命名函数,对移动过去的文件进行重命名
print("文件移动后重命名成功")
except:
print("文件移动后重命名=========>失败")
pass
else:
print("%s 目录已经存在-------------------------------------" %i)
continue # 如果文件不存在,则继续上述操作,直到循环结束