Python,我想替换一组文件的部分文件名

Python,我想替换一组文件的部分文件名,python,file,rename,Python,File,Rename,我想写一个程序,问你要替换什么,用什么替换它 我有一大组具有不同扩展名的文件,我想替换部分文件名,但我要替换的所有部分都是相同的。我想对文件夹中的每个文件都这样做 所以我有这样的文件 ABC.txt gjdABCkg.txt ABCfg.jpg ffABCff.exe 我只想用我想要的3个字母来代替ABC 我正在使用python 3.2 我在胡闹,想看看能不能让它工作,但我所做的一切都不起作用 这就是我到目前为止所得到的 import os directory = input ("Ent

我想写一个程序,问你要替换什么,用什么替换它

我有一大组具有不同扩展名的文件,我想替换部分文件名,但我要替换的所有部分都是相同的。我想对文件夹中的每个文件都这样做

所以我有这样的文件

ABC.txt
gjdABCkg.txt
ABCfg.jpg
ffABCff.exe
我只想用我想要的3个字母来代替ABC 我正在使用python 3.2

我在胡闹,想看看能不能让它工作,但我所做的一切都不起作用 这就是我到目前为止所得到的

import os  

directory = input ("Enter your directory")
old = input ("Enter what you want to replace ")
new = input ("Enter what you want to replace it with")

您可能需要添加一些内容,但以下是基本想法:

import os

def rename(path,old,new):
    for f in os.listdir(path):
        os.rename(os.path.join(path, f), 
                  os.path.join(path, f.replace(old, new)))
编辑:正如@J.F Sebastian在注释中所指出的,您可以使用Python 3.3中的相对路径(至少在Linux机器上)

从:

os.replace(src,dst,*,src_dir_fd=None,dst_dir_fd=None)
可以支持指定要提供的
src_dir_fd
和/或
dst_dir_fd


使用此选项可以轻松完成您的工作

使用
str.replace()
,这是您的全部代码?是要对目录中的所有文件执行此操作,还是对目录中的一组文件执行此操作?除了@AshwiniChaudhary之外,您可能还需要使用
os.listdir
来获取目录中的文件列表。如果使用*nix,你可以给mmv命令一个shot,你可能想要
os.path.join(directory,f)
在那里的某个地方。不,它不会。
os.listdir()
函数只返回文件名,而不是完整的路径。
os.rename()
函数需要完整的路径。@DietrichEpp--我刚刚在linux机器上试用过,它似乎工作正常……但如果路径上的文件不工作,则会编辑。@root:如果
目录
不是当前工作目录,请尝试运行它。无关:在Python3.3上,您可以使用相对路径并覆盖现有文件:
os.replace(f,f.replace(旧的,新的),src_dir_fd=dir_fd,dst_dir_fd=dir_fd)
@J.f.Sebastian:我猜
src_dir_fd
关键字将只在支持最近添加POSIX的系统上工作,比如Linux(但不是OS X、Windows)。
import os

def rename(path,oldstr,newstr):
    for files in os.listdir(path):
        os.rename(os.path.join(path, files), os.path.join(path, files.replace(oldstr, newstr)))