我有一个包含没有扩展名的文件列表的文件夹,我需要重命名或创建每个文件的扩展名“.text”
这是我的代码,但是有一个小错误,第二次我运行代码时,用长名称再次重命名的文件,例如
文件名:XXA
第一次运行后:XXA.text
第二名:XXAXXA.text.text
import os
def renamefiles():
filelist = os.listdir(r"D:\")
print(filelist)
os.chdir(r"D:\")
path = os.getcwd()
for filename in filelist:
print("Old Name - "+filename)
(prefix, sep, sffix) = filename.rpartition(".")
newfile = prefix + filename + '.text'
os.rename(filename, newfile)
print("New Name - "+newfile)
os.chdir(path)
rename_files()
答案 0 :(得分:2)
你在哪里
newfile = prefix + '.text'
你可以拥有
if not file_name.contains(".text"):
newfile = prefix + file_name + '.text'
请注意newfile = prefix + file_name + '.text'
的位置,我将其更改为newfile = prefix + '.text'
。如果你考虑一下,当你已经将实际的文件名提取到filename
时,你就不需要prefix
。
答案 1 :(得分:2)
for file in os.listdir(os.curdir):
name, ext = os.path.splitext(file)
os.rename(file, name + ".text")
答案 2 :(得分:1)
不要以这种方式进行分区,请使用os.path.splitext
:
file_name, extension = os.path.splitext(filename)
if not extension:
newfile = file_name + '.text'
os.rename(filename, newfile)
如果文件没有扩展名splitext
,则返回{{1>} Falsy 。然后可以更改文件扩展名。
答案 3 :(得分:0)
import os
def renamefiles():
filelist = os.listdir(r"D:\")
print(filelist)
os.chdir(r"D:\")
path = os.getcwd()
for filename in filelist:
print("Old Name - "+filename)
(prefix, sep, sffix) = filename.rpartition(".")
newfile = prefix + file_name + '.text'
if not filename.endswith(".text"):
os.rename(filename, newfile)
print("New Name - "+newfile)
os.chdir(path)
rename_files()
您需要检查文件名是否以.text结尾,并跳过那些