首页 > 其他分享 >(打标签)文件名空格和下划线的转换,指定数量的单元为下划线,剩下的是空格

(打标签)文件名空格和下划线的转换,指定数量的单元为下划线,剩下的是空格

时间:2023-10-27 11:04:23浏览次数:29  
标签:下划线 文件名 filename 空格 range new path os name

import os

def count_a(filename):
"""统计文件名中的a的数量,其中a是空格或下划线"""
return sum(1 for char in filename if char in ['_', ' '])

def parse_a_range(a_range):
"""解析a范围输入,并返回所有a的索引"""
indices = []
parts = a_range.split(',')
for part in parts:
if '-' in part:
start, end = map(int, part.split('-'))
indices.extend(range(start, end+1))
else:
indices.append(int(part))
return indices

def modify_filename(filename, a_range):
"""根据a的范围修改文件名"""
new_name = list(filename)
a_indices = [i for i, char in enumerate(filename) if char in ['_', ' ']]
to_modify = parse_a_range(a_range)

for idx, a_idx in enumerate(a_indices, start=1):
if idx in to_modify:
new_name[a_idx] = '_'
else:
new_name[a_idx] = ' '

return ''.join(new_name)

def main():
while True:
try:
folder_path = input("请输入文件夹地址: ")
if not os.path.exists(folder_path) or not os.path.isdir(folder_path):
raise ValueError("指定的路径不存在或不是一个有效的文件夹!")

a_range = input("请输入a的范围 (例如: 1-5, 7 或 1,3,5,6-7): ")

for root, dirs, files in os.walk(folder_path):
for file in files:
if file.lower().endswith(('.png', '.jpg', '.jpeg')):
a_count = count_a(file)
print(f"'{file}' 中有 {a_count} 个a。")
new_name = modify_filename(file, a_range)
os.rename(os.path.join(root, file), os.path.join(root, new_name))
print(f"'{file}' 已经更名为 '{new_name}'。")

break

except ValueError as ve:
print(f"错误: {ve}")
except Exception as e:
print(f"发生异常: {e}")

if __name__ == "__main__":
main()

标签:下划线,文件名,filename,空格,range,new,path,os,name
From: https://www.cnblogs.com/zly324/p/17791240.html

相关文章

  • 指定文件夹内删下划线程序(输入数字为需要保留的下划线)
    importosdefrename_files_in_directory(directory_path,underscore_input):try:#如果是范围输入,则解析范围的结束数字if'-'inunderscore_input:start,end=map(int,underscore_input.split('-'))underscore_count......
  • java数组 去重字符串去空格
    packagegta.custom.action.typeForm;importjava.util.ArrayList;publicclassTestmain{publicstaticvoidmain(Stringargs[]){String[]str={"2","2","3","1","4","4"};/......
  • C# 正则填充空格
    可用于键名匹配规则上。usingSystem.Text.RegularExpressions;vararr=new[]{"EmailAddress","BackgroundImage","EmailAddress1","EmailAddress211","EmailAddress13_1","C1OIncubation","CIncubati......
  • Python自动化测试selenium指定截图文件名方法
    这篇文章主要介绍了Python自动化测试selenium指定截图文件名方法,Selenium支持Web浏览器的自动化,它提供一套测试函数,用于支持Web自动化测试,下文基于python实现指定截图文件名方法,需要的小伙伴可以参考一下前言:Selenium支持Web浏览器的自动化,它提供一套测试函数,用于支持W......
  • java如何从Content-Disposition获取文件名的正则表达式
    一,主要是关于:post请求下载文件,如何从Content-Disposition获取文件名的正则表达式记录:HttpResponsehttpResponse=httpRequest.execute();byte[]bytes=httpResponse.bodyBytes();Stringheader=httpResponse.header("Content-Disposition")......
  • WebStorm 快捷键插入注释时,注释从开头开始,中间有许多空格的解决办法
    前言有些配置被乱改了,导致写代码时非常难受,我遇到的事儿是在vue模板中添加注释,之前都是在光标处插入的注释块,今天突然发现注释从开头开始插入了,中间还有一堆空格解决办法我们在vue中出现的问题,那我们就找vue的template模板中出现了问题,因为vue的template适合HTML有关联的,所以我们打......
  • EXCEL中去掉单元格首尾空格,保留字符串中间空格
    用到的函数:MID,FIND,LEFT,RIGHT,TRIM,SUBSTITUTE,LEN     公式:=MID(A1,FIND(LEFT(TRIM(A1)),A1),FIND("☆",SUBSTITUTE(A1,RIGHT(TRIM(A1)),"☆",LEN(A1)-LEN(SUBSTITUTE(A1,RIGHT(TRIM(A1)),""))))-FIND(LEFT(TRIM(A1)),A1)+1)说明:设单元格为A1,值为:$ab$��......
  • 这些文件都是7-Zip自解压缩文件(SFX)的默认模板。每个文件名后缀代表不同类型的操作系统
    这些文件都是7-Zip自解压缩文件(SFX)的默认模板。每个文件名后缀代表不同类型的操作系统和处理器架构。Default.SFX:这是用于32位Windows操作系统的默认SFX模板,其中包含了7-Zip解压程序。Default64.SFX:这是用于64位Windows操作系统的默认SFX模板,其中包含了7-Zip解压程序。WinCon.S......
  • 脚本EOF两边有空格导致出错
     [root@zabbix-agentfiles]#shftpinstall.shuseradd:user'ceshi'alreadyexistsChangingpasswordforuserceshi.passwd:allauthenticationtokensupdatedsuccessfully.Preparing...#################################[10......
  • 文件名称批量修改
    题目:批量修改文件名是工作中一个常见的需求,本节实践实现的功能是将test文件夹下的所有文件重命名为“rename_原文件名”,例如,将hello.txt重命名为rename_hello.txt?实现步骤:1、首先在数据集中把文件下载下来导入至test文件夹下:这是数据集的下载地址;https://aistudio.baidu......