从dir中的文件中删除文件扩展名

时间:2015-04-05 23:43:43

标签: python-2.7

我想要仅使用Python 2.7.3从特定于目录的路径中删除任何给定的文件扩展名。如果从开始指定实际文件,os.path.splitext将返回扩展名。但我想将脚本抛出一个目录并使用os.list.dir来浏览目录。我找不到如何实际删除文件扩展名。如果它返回' foo.png'我怎么能删除" .png"永久延期?我认为os.remove(file_name_extension)可能会有所帮助,但在这种情况下它似乎不是

就测试而言,这就是我所拥有的。

def main():
   folder_path = sys.argv[1] 
   for file in os.listdir(folder_path):
      current = os.path.join(folder_path, file) 

   print "\n\t%s" % file

因此,这可以正常打印以在指定的目录中筛选文件及其扩展名。 我如何能够操纵文件的扩展名以永久删除它?

谢谢

2 个答案:

答案 0 :(得分:1)

如果您想要没有扩展名的文件的路径和名称,那么您只需使用os.path.splitext(current)[0]即可path/to/foobar.txt path/to/foobaros.path.basename。如果您只想要名称而不是完整路径(没有扩展名),则可以使用os.path.splitext(os.path.basename(current))[0]

path/to/foobar.txt

foobar转换为{{1}}。

答案 1 :(得分:0)

我能够通过下面的代码得到我想要的结果 为我的私人项目工作。虽然它可能很可怕,但确实如此 本来打算以迂回的方式开始。

if extension == ".png":

    folder_path_length = len(folder_path)+1
    extension = len(file)-4 + folder_path_length
    filename = file[:extension]

    os.rename(current, current[:extension])

    extension = len(file)-4 
    truncated_filename = file[:extension]

    print "\n\t%s \n\tnow renamed to: %s" % (filename, truncated_filename)

    files_renamed_count +=1