最近写了一些代码片段, 学了一些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
- os.chdir(path): 切换到给定路径下
- os.listdir(path): 列出给定路径下的所有文件和文件夹, 输出一个list(包括隐藏文件夹)
- os.path.isdir(filename): 判断一个文件是文件还是文件夹
- 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
- os.path.exists(r’pictures‘): 是判断当前路径下有没有‘pictures‘这个文件夹
- 字符串前加‘r‘的作用是防止字符转义, 比如字符串中有‘\n‘, 有了‘r‘就会直接输出成‘\n‘, 没有‘r‘会被当作换行符
- glob.glob(pattern): 返回满足pattern正则匹配的所有可见项目, 包括文件和文件夹
- 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()
- os.getcwd(): 返回当前路径(类似linux中pwd命令)
- xlsxwriter模块的使用:
wb = xlsxwriter.Workbook(excel_path)wb = xlsxwriter.Workbook(excel_path)
ws = wb.add_worksheet()
ws.write(row, col, value)
wb.close()