Python - 如何将所有文件名改为小写且不带空格
Python - how to change all file names into lowercases and without blanks
我正在尝试更改文件夹中的所有文件,以便它们包含一些统一性。
例如,我有 'Hard Hat Person01'、'Hard Hat Person02' 等等,但我在同一文件夹中还有 'hard_hat_person01' 和 'hardhatperson01'。
所以我想将所有这些文件名更改为 'hardhatperson01'、'hardhatperson02' 等等。
我尝试了以下代码,但它一直显示错误。
你能帮我解决这个问题吗?
for file in os.listdir(r'C:\Document'):
if(file.endswith('png')):
os.rename(file, file.lowercase())
os.rename(file, file.strip())
解决方法如下:
- 检查文件是否存在
- 避免重写
- 检查是否需要重命名
import os
os.chdir(r"C:\Users\xyz\Desktop\tESING")
for i in os.listdir(os.getcwd()):
if(i.endswith('png')) and " " in i and any(j.isupper() for j in i):
newName = i.lower().replace(" ","")
if newName not in os.listdir(os.getcwd()):
os.rename(i,newName)
else:
print("Already Exists: ",newName)
listdir
仅 returns 文件名,而不是其目录。而且您不能多次重命名该文件。事实上,您应该确保不会意外覆盖现有文件或目录。更稳健的解决方案是
import os
basedir = r'C:\Document'
for name in oslistdir(basedir):
fullname = os.path.join(basedir, name)
if os.path.isfile(fullname):
newname = name.replace(' ', '').lower()
if newname != name:
newfullname = os.path.join(basedir, newname)
if os.path.exists(newfullname):
print("Cannot rename " + fullname)
else:
os.rename(fullname, newfullname)
我正在尝试更改文件夹中的所有文件,以便它们包含一些统一性。 例如,我有 'Hard Hat Person01'、'Hard Hat Person02' 等等,但我在同一文件夹中还有 'hard_hat_person01' 和 'hardhatperson01'。
所以我想将所有这些文件名更改为 'hardhatperson01'、'hardhatperson02' 等等。 我尝试了以下代码,但它一直显示错误。 你能帮我解决这个问题吗?
for file in os.listdir(r'C:\Document'):
if(file.endswith('png')):
os.rename(file, file.lowercase())
os.rename(file, file.strip())
解决方法如下:
- 检查文件是否存在
- 避免重写
- 检查是否需要重命名
import os
os.chdir(r"C:\Users\xyz\Desktop\tESING")
for i in os.listdir(os.getcwd()):
if(i.endswith('png')) and " " in i and any(j.isupper() for j in i):
newName = i.lower().replace(" ","")
if newName not in os.listdir(os.getcwd()):
os.rename(i,newName)
else:
print("Already Exists: ",newName)
listdir
仅 returns 文件名,而不是其目录。而且您不能多次重命名该文件。事实上,您应该确保不会意外覆盖现有文件或目录。更稳健的解决方案是
import os
basedir = r'C:\Document'
for name in oslistdir(basedir):
fullname = os.path.join(basedir, name)
if os.path.isfile(fullname):
newname = name.replace(' ', '').lower()
if newname != name:
newfullname = os.path.join(basedir, newname)
if os.path.exists(newfullname):
print("Cannot rename " + fullname)
else:
os.rename(fullname, newfullname)