python中os模块的一些常用操作(os.chdir(), os.listdir(), os.path.isdir(), glob.glob()等)

最近写了一些代码片段, 学了一些python新函数, 现记录如下

# 序列重命名每个case
def rename_dir(batch_path):
    # 切换到给定目录下
    os.chdir(batch_path)
    # 序列第一个文件名
    a = 1
    for dir_or_file in os.listdir(batch_path):
        # 筛选得到所有非隐藏的文件夹
        if os.path.isdir(dir_or_file) and not dir_or_file.startswith('.') and not dir_or_file.startswith('pictures'):
            # 重命名文件夹
            os.rename(dir_or_file, str(a))
            a += 1
  1. os.chdir(path): 切换到给定路径下
  2. os.listdir(path): 列出给定路径下的所有文件和文件夹, 输出一个list(包括隐藏文件夹)
  3. os.path.isdir(filename): 判断一个文件是文件还是文件夹
  4. os.rename(filename, newname): 重命名文件/文件夹
# 复制每个case中的jpg文件到pictures文件夹下
def get_pictures(batch_path):
    # 切换到给定目录下
    os.chdir(batch_path)
    # 在当面目录下创建pictures文件夹
    if os.path.exists(r'pictures'):
        pass
    else:
        os.mkdir(r'pictures')
    # 序列图片第一个文件名(需要与rename_dir中文件夹的第一个文件名对应)
    a = 1
    for dir_or_file in os.listdir(batch_path):
        # 得到所有目标文件夹(含有jpg图片的文件夹)
        if os.path.isdir(dir_or_file) and not dir_or_file.startswith(".") and not dir_or_file.startswith('pictures'):
            # 得到当前目标文件夹下所有jpg文件
            for file in glob.glob(dir_or_file + r'/*.jpg'):
                # 新的图片名字
                new_name = dir_or_file +  '/' +  dir_or_file + '.jpg'
                # 重命名图片
                os.rename(file, new_name)
                # 复制jpg文件到pictures文件夹下
                copy(new_name, r'pictures')
                a += 1
  1. os.path.exists(r’pictures‘): 是判断当前路径下有没有‘pictures‘这个文件夹
  2. 字符串前加‘r‘的作用是防止字符转义, 比如字符串中有‘\n‘, 有了‘r‘就会直接输出成‘\n‘, 没有‘r‘会被当作换行符
  3. glob.glob(pattern): 返回满足pattern正则匹配的所有可见项目, 包括文件和文件夹
  4. shutil.copy(filename, dir_name): 复制文件/文件夹到目标文件夹下
# 将病患信息和切片数量写入excel文件中
def generate_excel(batch_path, excel_path):
    # 创建一个工作簿并添加一个工作表
    wb = xlsxwriter.Workbook(excel_path)
    ws = wb.add_worksheet()
    # 写入表格每一栏标题信息
    ws.write(0, 0, 'No.')
    ws.write(0, 1, 'Sex')
    ws.write(0, 2, 'Age')
    ws.write(0, 3, 'Slice_num')
    ws.write(0, 4, '诊断信息')
    # 得到batch_path下的information_list
    information_list = get_information_list(batch_path)
    # 患者信息的初始行数与列数及编号
    col = 0
    # 得到每个患者的信息
    for information in information_list:
        row = information['ID']
        ws.write(row, col,   information['ID'])
        ws.write(row, col+1, information['Sex'])
        ws.write(row, col+2, information['Age'])
        ws.write(row, col+3, information['Slice_num'])
    # 关闭并保存工作簿
    wb.close()
  1. os.getcwd(): 返回当前路径(类似linux中pwd命令)
  2. xlsxwriter模块的使用:
    wb = xlsxwriter.Workbook(excel_path)wb = xlsxwriter.Workbook(excel_path)
    ws = wb.add_worksheet()
    ws.write(row, col, value)
    wb.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值