文件批量重命名:
将一个文件夹下的大量文件重命名且转移到另一个文件夹下面。
#!\usr\bin\env python
# -*- coding: utf-8 -*-
# FileName: batchrename.py
# Function: 批量命名某一文件夹下的文件名
import sys
import os
import shutil
# 路径检查
def checkpath(path):
if os.path.exists(path):
return
else:
os.makedirs(path)
def main():
d = "/Users/user/Desktop/Trainee/work/data/样方照片_0409"
d_ann = "/Users/user/Desktop/Trainee/work/data/grass_seg0422/Annotations"
d_jpg = "/Users/user/Desktop/Trainee/work/data/grass_seg0422/JPEGImages"
files = os.listdir(d)
for f in files:
if f.lower().endswith('.jpg'):
print(f)
for fpng in files:
if fpng.endswith('.png') and fpng.startswith(f):
print(f, fpng)
src = os.path.join(d, f)
dst = os.path.join(d_jpg, f+".jpg")
# print(src, dst)
shutil.move(src, dst)
src = os.path.join(d, fpng)
dst = os.path.join(d_ann, f+".png")
checkpath(dst)
# print(src, dst)
shutil.move(src, dst)
break
if __name__ == '__main__':
main()
批量重命名(2):
# 文件批量重命名:大小号换
import os
import sys
data_dir = "/media/hangpai/libo_training/直流干字耐张塔"
for lines in os.listdir(data_dir):
print(lines)
lines_path = os.path.join(data_dir, lines)
for line in os.listdir(lines_path):
if "侧" in line:
src = os.path.join(lines_path, line)
if line.endswith("小"):
dst = line[:-1] + "大"
if line.endswith("大"):
dst = line[:-1] + "小"
dst = os.path.join(lines_path, dst)
print(src, "->", dst)
os.rename(src, dst)
提取字符串中连续的4位数字:
import re
s = "#0027+1-#0025"
import re
def getValue(s):
pattern = re.compile(r"\d+")
res = re.findall(pattern, s)
for i in res:
if len(i) != 4:
res.remove(i)
return res
getValue(s)
获取文件夹中文件的数量:
for parts in os.listdir(data_path):
parts_path = os.path.join(data_path, parts)
file_num = sum([os.path.isfile(os.path.join(parts_path, file))
for file in os.listdir(parts_path)])
按文件名称批量删除文件夹中部分文件:
# used to delete .DS_store files
import glob
import os
# Windows中用r来取消 / 的转义作用
path = r'C:\Users\ao_han\Desktop\Trainee'
i = 0
for roots, dirname, files in os.walk(path):
# print(roots, dirname, files)
for file in files:
if file.startswith(".DS_") or file.startswith("._.DS"):
print(file)
os.remove(os.path.join(roots, file))
# 用于测试
# if i == 3:
# break
# i+=1
mask转换:
将所有mask转换成0或1的分布:
#!\usr\bin\env python
# -*- coding: utf-8 -*-
import sys
import os
import cv2
def main():
d_ann = "/Users/user/Desktop/Trainee/work/data/grass_seg0422/Annotations"
m_ann = "/Users/user/Desktop/Trainee/work/data/grass_seg0224/Annotations"
files = os.listdir(d_ann)
for img_path in files:
imgpath = os.path.join(d_ann, img_path)
img = cv2.imread(imgpath)
mask = img[:, :, 1]
mask[mask < 1] = 0
mask[mask >= 1] = 1
newFilePath = os.path.join(m_ann, img_path)
cv2.imwrite(newFilePath, mask)
if __name__ == '__main__':
main()