首页 > 编程语言 >1、python 基础知识-文件编号排序及指定后缀名文件删除

1、python 基础知识-文件编号排序及指定后缀名文件删除

时间:2022-09-28 11:33:11浏览次数:54  
标签:文件 python jpg 后缀名 json file path os dir


问题描述:需要对一些文件进行删除和存在一对一的文件保存

(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
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)

标签:文件,python,jpg,后缀名,json,file,path,os,dir
From: https://blog.51cto.com/u_12504263/5719085

相关文章

  • python的私有方法
     __init__和__new__#!/user/bin/envpython#-*-coding:utf-8-*-#__new__在__init__之前执行#__new__是用来控制对象的生成过程,在对象生成之前#__ini......
  • java文件大小单位转换
    privateStringformatSize(longfileS){DecimalFormatdf=newDecimalFormat("#.00");StringfileSizeString="";StringwrongSize="......
  • Linux 查看文件夹大小
    查看指定目录du-h--max-depth=1/pathdu-h-.“.”代表当前目录下。也可以换成一个明确的路径-h表示用K、M、G的人性化形式显示常用参数:-a或-all为每个指定文件......
  • php大文件(百M以上)的上传下载实现技术.
    ​PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间......
  • 如何下载后端返回的二进制文件流
    1.通过接口或其他方式获取二进制文件流,这里以fileBinary代替。//fileBinary===二进制文件流//1.创建一个a标签constlink=document.createElement('a');//2.将二......
  • 使用word模板生成新的PDF文件
    摘要本文通过使用word模板文件,替换文件中的参数,转化为PDF文件放入response流实现PDF下载。话不多说,进入正题导入依赖<dependency><groupId>org.apache.poi......
  • java如何将字节数组写入到一个文件中呢?
    转自: ​​http://www.java265.com/JavaJingYan/202207/16566829303864.html​​字节数组简介:   字节:字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。在ASCI......
  • php大文件(百M以上)的上传下载实现技术
    ​需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:......
  • python的bisect
    bisect是python内置模块,用于有序序列的插入和查找。查找:bisect(array,item)插入:insort(array,item)importbisecta=[1,4,6,8,12,15,20]position=bisect.......
  • 多个python环境,选用指定环境下的 pyinstaller 进行打包文件
    背景:电脑上同时安装了python2.7和python3.8,现在想用python3.8环境下的pyinstaller来进行打包生成exe文件。常规操作方法:通过cmd进入需要打包文件的目录,执行命令pyinsta......