根据excel改DICOM压缩包文件名

因为工作的原因,需要吧dicom压缩包的文件名改为这患者的名字,故写了改脚本,原理是通过python解压zip压缩包,放入"D:\test\"这目录下,读取患者姓名来改压缩包名字,完成后再删除test里面内容,

import os
import pydicom
import zipfile
import xlrd
from xpinyin import Pinyin
k = "D:\\6820220321017.zip"
m = "D:\\test\\"
path = "D:\\gg\\"
excl = "D:\\gg.xls"
s = {} #存放原压缩包和解压dicom文件对应关系
s1 = {}
def print_hi(name):
    file_name_list = os.listdir(path)
    for f in file_name_list:
        fg(f) #待改名称的目录下的文件名
    file_name_list = os.listdir(m)
    for f in file_name_list:
      #print("解压后"+m+f)
      ds = pydicom.dcmread(m+f) #获取解压后的dicom患者姓名
      os.remove(m+f)
      st=ds.PatientName
      age=ds.PatientAge
      a=path + str(st)+"-"+str(age)
      a1=a.replace(" ", "")
      print(a1)
      os.rename(path+s[f], a1+'.zip') #把压缩文件改为患者名
def fg(k):
    u=path+k
    #print("待解压"+u)
    zip_file = zipfile.ZipFile(u)
    zip_list = zip_file.namelist()  # 得到压缩包里所有文件
    i = 0
    for f in zip_list:
        i = i + 1
        if i == 2:
            break;
        s[f]=k
        zip_file.extract(f, m)  # 循环解压文件到指定目录
    zip_file.close()  # 关闭文件,必须有,释放内存
#读取表格,并获取到拼音
def fg2():
    table = xlrd.open_workbook(excl)
    sheet = table.sheet_by_index(0)
    col_data = sheet.col_values(0)
    p = Pinyin()
    k=[]
    jj={}
    for f in col_data:
        k.append(p.get_pinyin(f,'').upper()+'.zip')
    jj=dict(zip(k,col_data))
    return jj
#改压缩包中文名称
def fg3(jj):
    file_name_list2 = os.listdir(path)
    for k in jj.keys():
      for k1 in file_name_list2:
          last_index = k1.rfind('-')
          if k1[0: last_index]+'.zip'==k:
              if os.path.exists(path+jj[k] + '.zip'):
                  os.rename(path + k1, path + jj[k] + '222.zip')
              else:
                  os.rename(path + k1, path + jj[k] + '.zip')














if __name__ == '__main__':
    print_hi('PyCharm')
    jj=fg2()
    fg3(jj)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值