Python:如何将文件名更改为小写而不是扩展名

问题描述

我正在尝试将 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