我已经给出了我的软件无法解释的数据,除非它最后有一个小写字母。数据在最后以大写字母递送。如果它是一个字母,如何将文件名的最后一个字母改为小写?
不知何故,我需要先递归循环遍历所有文件夹,并查找文件名是否以字母结尾,然后将其更改为小写。
我认为Python可以做到这一点,但我不知道如何。任何帮助将是伟大的!
你, 罗布
我已经给出了我的软件无法解释的数据,除非它最后有一个小写字母。数据在最后以大写字母递送。如果它是一个字母,如何将文件名的最后一个字母改为小写?
不知何故,我需要先递归循环遍历所有文件夹,并查找文件名是否以字母结尾,然后将其更改为小写。
我认为Python可以做到这一点,但我不知道如何。任何帮助将是伟大的!
你, 罗布
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
我猜文件结尾可以用同样的方法改变吗?.e.g C0000F.JPG到C0000f.jpg –
检查我的新增加 – Abhijit
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
'文件名[-1]'而不是'文件名[-1:]',不太令人困惑;) – juliomalegria
如果目标是改变最后一个目标,可能使用'* .mp3'作为示例模式并不是最好的选择文件名字母小写 - 小写字母'3'仍然是'3',所以代码基本上什么都不做。 –
我认为这个答案的一个很好的补充是添加'if filename [-1] .isalpha():'然后做转换。可以肯定的是,就是这样。希望我现在可以删除它。没关系... – Vorticity
我已经看到了非常奇怪的错误软件操作,但只能够对名称以小写字母结尾的文件进行操作,肯定可能会进入前十名。 :) –