Python 脚本

文件批量重命名:

将一个文件夹下的大量文件重命名且转移到另一个文件夹下面。

#!\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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值