9.8.3消除缺失的编号/修正文件名称流水号

 编写一个程序,在一个文件夹中,找到所有带指定前缀的文件,诸如spam001.txt,spam002.txt 等,并定位缺失的编号(例如存在spam001.txt 和spam003.txt,但不存在spam002.txt)。让该程序对所有后面的文件改名,消除缺失的编号。
作为附加的挑战,编写另一个程序,在一些连续编号的文件中,空出一些编号,以便加入新的文件。

# 此py文件可以修正指定含有某前缀的文件名称的流水号,例如将一堆spam00001.txt但是名称里的号码部分存在缺漏的名称,可以将所有这类文件重新排列号码进行改名。



# 此py文件可以修正指定含有某前缀的文件名称的流水号。
# 例如将一堆spam00001.txt但是名称里的号码部分存在缺漏的名称,可以将所有这类文件重新排列号码进行改名。


import os,shutil

# 设置工作路径。
filePath = "E:\\PythonTest\\filetest"
os.chdir(filePath)

# 工作路径内的所有文件。
allFileName = os.listdir()

# 找到指定格式名的文件。后续再进行号码检查修正。
formatFile = []
for fileName in allFileName:
    # 找到前缀为'spam',后缀为'.txt'的文件。
    if fileName[:4] == 'spam' and fileName[-4:] == '.txt':
        formatFile.append(fileName)

# 符合格式名文件的个数。
fileCount = len(formatFile)

# 根据格式名文件个数 生成 格式名总表formatNameList
formatNameList = []
for num in range(fileCount):
    # zfill(width) 表示数字的宽度。
    formatNameList.append('spam' + str(num).zfill(5) + '.txt')
# print('formatNamelist',formatNameList)


# 将工作文件与格式名总表进行比对。修正格式文件名的所有文件将移到新文件夹newPath
newPath = "E:\\PythonTest\\filetest\\格式名文件夹"
if os.path.exists(newPath):
    print(newPath,'已存在。')
else:
    print(newPath,'已创建。')
    os.makedirs(newPath)


# 将工作文件与格式名总表进行比对。
for i in range(fileCount):
    if formatFile[i] == formatNameList[i]:
        print(os.path.join(filePath, formatFile[i]),'————→', os.path.join(newPath, formatNameList[i]))
        # 进行预览,检查无误后再去掉注释。 将无需改名的文件移动到newPath。
        # changeName = shutil.move(os.path.join(filePath,formatFile[i]),os.path.join(newPath,formatNameList[i]))
    else:
        print(os.path.join(filePath, formatFile[i]),'————→', os.path.join(newPath, formatNameList[i]))
        # 进行预览,检查无误后再去掉注释。 将文件改名后移动到newPath。
        # changeName = shutil.move(os.path.join(filePath,formatFile[i]),os.path.join(newPath,formatNameList[i]))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值