问题描述:需要对一些文件进行删除和存在一对一的文件保存
(1)自动删除指定文件后缀名文件:
import sys
currDir = sys.path[0]
import os
def removeFile(dir,postfix):
if os.path.isdir(dir):
for file in os.listdir(dir):
removeFile(dir+'/'+file,postfix)
else:
if os.path.splitext(dir)[1] == postfix:
os.remove(dir)
removeFile(currDir,'.json')
(2)删除非一一对应的图片jpg和xml串;
# -*- coding: utf-8 -*-
import os
import sys
from PIL import Image
input_folder = r'G:\\A' # 源文件夹,包含.png格式图片
output_folder = r'G:\\A' # 输出文件夹
# training_data=[]
# 防止图片时png格式 上述代码可删除使用
path1 = output_folder
def file_name(file_dir):
jpg_list = []
json_list = []
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.jpg':
jpg_list.append(os.path.splitext(file)[0])
elif os.path.splitext(file)[1] == '.xml':
json_list.append(os.path.splitext(file)[0])
diff = set(json_list).difference(set(jpg_list))
print(len(diff))
for name in diff:
print("no jpg", name + ".xml")
os.remove(file_dir + "/" + name + ".xml")
diff2 = set(jpg_list).difference(set(json_list))
print(len(diff2))
for name in diff2:
print("no json", name + ".jpg")
os.remove(file_dir + "/" + name + ".jpg")
return jpg_list, json_list
file_name(path1)
(3)进行文件夹内的图片和json串重命名
import json
import cv2
import os
import io
def rename(sourceDir,destDir):
for root,dir,files in os.walk(sourceDir):
for idx,file in enumerate(files):
if file.endswith('.jpg'):
# img copy and rename
src = os.path.join(root, file) # 原先的图片名字\
img=cv2.imread(src)
cv2.imwrite("exchange.jpg",img)
newname=str(idx)+str("_") + file
dst = os.path.join(os.path.abspath(destDir ), newname) # 根据自己的需要重新命名,可以把'E_' + img改成你想要的名字
if not os.path.isfile(dst):
os.rename("exchange.jpg", dst) # 重命名,覆盖原先的名字
else:
print("the img has existed",src) #容易 造成 重名的图片文件
break
# json copy and rename
(filepath, tempfilename) = os.path.split(src)
(filename, extension) = os.path.splitext(tempfilename)
jsonname=".".join([filename,"json"])
srcjson = os.path.join(filepath, jsonname)
file_json = io.open(srcjson, 'r', encoding='utf-8')
json_data = file_json.read()
data = json.loads(json_data)
data['imagePath'] = newname
newfilejson="".join([str(idx),str("_"),jsonname])
dstjson=os.path.join(os.path.abspath(destDir ),newfilejson)
if not os.path.isfile(dstjson): #容易 造成 重名的json文件
with open(dstjson, 'w') as f2:
json.dump(data, f2, indent=1)
else:
print("the json has existed",srcjson)
break
if os.path.isfile("exchange.jpg"):
os.remove("exchange.jpg")
sourceDir=r"F:\sxj\20210629"
destDir=r"F:\sxj\20210631"
rename(sourceDir,destDir)
序列号重命名
import json标签:文件,python,jpg,后缀名,json,file,path,os,dir From: https://blog.51cto.com/u_12504263/5719085
import cv2
import os
import io
def rename(sourceDir, destDir):
for root, dir, files in os.walk(sourceDir):
for idx, file in enumerate(files):
if file.endswith('.JPG'):
# img copy and rename
src = os.path.join(root, file) # 原先的图片名字\
img = cv2.imread(src)
cv2.imwrite("exchange.jpg", img)
newname = str(idx) +".jpg"
dst = os.path.join(os.path.abspath(destDir), newname) # 根据自己的需要重新命名,可以把'E_' + img改成你想要的名字
if not os.path.isfile(dst):
os.rename("exchange.jpg", dst) # 重命名,覆盖原先的名字
else:
print("the img has existed", src) # 容易 造成 重名的图片文件
break
# json copy and rename
(filepath, tempfilename) = os.path.split(src)
(filename, extension) = os.path.splitext(tempfilename)
jsonname = ".".join([filename, "json"])
srcjson = os.path.join(filepath, jsonname)
file_json = io.open(srcjson, 'r', encoding='utf-8')
json_data = file_json.read()
data = json.loads(json_data)
data['imagePath'] = newname
newfilejson = "".join([str(idx),".json"])
dstjson = os.path.join(os.path.abspath(destDir), newfilejson)
if not os.path.isfile(dstjson): # 容易 造成 重名的json文件
with open(dstjson, 'w') as f2:
json.dump(data, f2, indent=1)
else:
print("the json has existed", srcjson)
break
if os.path.isfile("exchange.jpg"):
os.remove("exchange.jpg")
sourceDir = r"G:\sxj731533730\20211012\thunder"
destDir = r"G:\sxj731533730\20211012\A"
rename(sourceDir, destDir)