问题描述
我正在尝试将 WINDOW.txt 等文件名更改为小写,但随后我还需要将扩展名 .txt 更改为大写。我想我可以将整个内容更改为小写,因为扩展名已经是小写的,然后使用 .endswith() 之类的东西将扩展名更改为大写,但我似乎无法弄清楚。我知道这对大多数人来说似乎很简单,所以感谢您的耐心等待。
解决方法
这个处理文件名,跨不同操作系统的路径:
import os.path
def lower_base_upper_ext(path):
"""Filename to lowercase,extension to uppercase."""
path,ext = os.path.splitext(path)
head,tail = os.path.split(path)
return head + tail.lower() + ext.upper()
它保持可能的目录名称不变,只是文件名部分是小写的,扩展名是大写的。
,idxNaN
...正确发射:
oldname='HeLlO.world.TxT'
if '.' in oldname:
(basename,ext) = oldname.rsplit('.',1)
newname = basename.lower() + '.' + ext.upper()
else:
newname = oldname.lower()
print(f'{oldname} => {newname}')
,
name = "MyFile.txt"
new_name = name.rsplit(sep= ".",maxsplit=1)
print(new_name[0].lower()+"."+new_name[1].upper())
,
如果我正确阅读了问题,它需要小写名称和大写文件扩展名,这很奇怪,但这里有一个简单的解决方案。
Sub test()
Dim r As Excel.Range
Dim l As Long
Dim dic As New Scripting.Dictionary
Dim strKey As String
Set r = Range("a2:d9")
a = r.Value
For l = 1 To UBound(a)
strKey = a(l,1) & "_" & a(l,2) & "_" & a(l,3)
If Not dic.Exists(strKey) Then
dic.Add strKey,a(l,4)
Else
dic.Item(strKey) = dic.Item(strKey) + a(l,4)
End If
Next l
Range("g1").Resize(dic.Count,1).Value = Application.Transpose(dic.Keys())
Range("h1").Resize(dic.Count,1).Value = Application.Transpose(dic.Items())
End Sub
,
filename = "WINDOW.txt"
filename = filename.split('.')
filename = ".".join(filename[0:-1]).lower() + '.' + filename[-1].upper()
print(filename)
>> window.TXT
filename = "foo.bar.maz.txt"
filename = filename.split('.')
filename = ".".join(filename[0:-1]).lower() + '.' + filename[-1].upper()
print(filename)
>> foo.bar.maz.TXT