【问题标题】:How to change last letter of filename to lowercase if it is a letter?如果是字母,如何将文件名的最后一个字母更改为小写?
【发布时间】:2012-01-09 01:00:21
【问题描述】:

我得到的数据不能被我的软件解释,除非它最后有一个小写字母。数据以大写字母结尾。

不知何故,我需要首先递归循环遍历所有文件夹并查找文件名是否以字母结尾,然后将其更改为小写。

我认为python可以做到这一点,但我不知道怎么做。任何帮助都会很棒!

你的, 抢

【问题讨论】:

  • 我见过非常奇怪的行为软件,但只能对名称以小写字母结尾的文件进行操作,肯定会进入前十名。 :)

标签: python


【解决方案1】:
import fnmatch
import os

rootPath = '/'
pattern = '*.mp3'

for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        os.rename(filename, filename[:-1] + filename[-1:].lower())

来源: http://rosettacode.org/wiki/Walk_a_directory/Recursively#Python

Rename Files in Python

【讨论】:

  • filename[-1] 而不是filename[-1:],不那么混乱;)
  • 如果目标是将文件名的最后一个字母更改为小写,则可能使用*.mp3 作为示例模式不是最佳选择——小写3 仍然是@ 987654328@,所以代码基本上什么都不做。
  • 我认为这个答案的一个很好的补充是添加 if filename[-1].isalpha(): 然后进行转换。可以肯定的是,就是这样。希望我现在可以删除它。没关系……
【解决方案2】:
def listFiles(dir):
    rootdir = dir
    for root, subFolders, files in os.walk(rootdir):
        for file in files:
            yield os.path.join(root,file)
    return


for f in listFiles(r"Your Path"):
    if f[-1].isalpha():
        os.rename(f,f[:-1]+f[-1].lower())
        print "Renamed " + f + "to" + f[:-1]+f[-1].lower()

递归地列出文件。如果最后一个字符是字母,则将其更改为小写并重命名文件


根据发布者的最新要求修改程序

for fname in listFiles(r"Your Path"):
        newName=re.match("(^.*?)([A-Za-z\.]*$)",x)
        newName=''.join([newName[0],newName[1].lower()])
        os.rename(fname,newName)
        print "Renamed " + fname + "to" + newName

【讨论】:

  • 我猜文件结尾可以用同样的方式改变?例如C0000F.JPG变成C0000f.jpg
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 2013-02-04
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 2015-08-07
相关资源
最近更新 更多