如何在Python

时间:2016-06-26 22:39:15

标签: python

我有一个包含没有扩展名的文件列表的文件夹,我需要重命名或创建每个文件的扩展名“.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()

4 个答案:

答案 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结尾,并跳过那些