Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
想在python中重命名两个扩展名不同的文件吗_Python - Fatal编程技术网

想在python中重命名两个扩展名不同的文件吗

想在python中重命名两个扩展名不同的文件吗,python,Python,我在一个项目中工作,我需要重命名同一文件夹中的多个文件,为此我写下代码,但当我运行此代码时,它会抛出类似“文件已存在”的错误。有没有什么方法可以让我跳过那些已经存在于Seqqnce中的文件,并按顺序重命名文件的其余部分,请帮助我 文件示例: 0.png 0.xml 我写的代码: import os png_files = set() xml_files = set() base_path = r'C://Users//admin//Desktop//anota

我在一个项目中工作,我需要重命名同一文件夹中的多个文件,为此我写下代码,但当我运行此代码时,它会抛出类似“文件已存在”的错误。有没有什么方法可以让我跳过那些已经存在于Seqqnce中的文件,并按顺序重命名文件的其余部分,请帮助我

文件示例:

0.png
0.xml 
我写的代码:

    import os
    png_files = set()
    xml_files = set()
    base_path = r'C://Users//admin//Desktop//anotate'
    for x in os.listdir(base_path):
    name, ext = x.split('.')
    if ext == 'png':
    png_files.add(name)
    elif ext == 'xml':
    xml_files.add(name)
    counter = 0
    for filename in png_files.intersection(xml_files): # For files that are common (same names)
    if filename.exists():
    print ("File exist")
    else:
os.rename(os.path.join(base_path,filename+'.png'),os.path.join(base_path,str(counter)+'.png')) 
#Rename png file
os.rename(os.path.join(base_path,filename+'.xml'),os.path.join(base_path,str(counter)+'.xml')) # 
Rename xml file
counter += 1 # Increment counter   
请确保将您的文件夹复制为备份,因为这将删除您的旧文件夹,而将放置一个同名的新文件夹,以防出现任何问题。
从pathlib导入路径
目录=路径(“./注释”)
out\u dir=路径(“/out”)
out_dir.mkdir(exist_ok=True)
pngs=list(directory.glob(“*.png”))
xmls=list(directory.glob(“*.xml”))
对于num,枚举中的文件(pngs):
write_here=out_dir/“{}.png”。格式(num)
在此处写入。写入字节(file.read\u bytes())
对于num,枚举中的文件(xmls):
write_here=out_dir/“{}.xml”。格式(num)
在此处写入。写入字节(file.read\u bytes())
对于目录.iterdir()中的文件:
文件。取消链接()
directory.rmdir()目录
输出目录重命名(目录)
base_dir变量更改为包含图像和XML的文件夹的路径。
输出将在
当前工作目录中名为Out的文件夹中生成

示例:
假设您的
annotate
文件夹如下所示

/Annotate
--/0.png
--/0.xml
--/1.png
--/1.xml
--/dog.png
--/dog.xml
--/cat.png
--/cat.xml
运行脚本后,
Annotate
文件夹如下所示

/Annotate
--/0.png
--/0.xml
--/1.png
--/1.xml
--/2.png
--/2.xml
--/3.png
--/3.xml
我没有完全重命名文件,但我正在创建一个新目录,使用您想要的文件命名格式。

注意:
如果注释更多图像,即在注释更多图像后再次运行脚本,我建议您删除旧的输出文件夹。不过,为了安全起见,这不要紧
确保安装了最新的python。

根据要求,这里是一步一步的代码解释! 您需要导入所需的模块

从pathlib导入路径
创建两个路径对象:
1.
目录
指定输入目录路径。
2. <代码>输出目录
指定临时输出文件夹的路径

目录=路径(“./注释”)
out\u dir=路径(“/out”)
创建路径对象中指定的文件夹,如果文件夹不存在,则不会抛出错误,代码将继续

out\u dir.mkdir(exist\u ok=True)
将选定路径对象内以
.png
.xml
结尾的所有路径制作两个单独的python列表

pngs=list(directory.glob(“*.png”))
xmls=list(directory.glob(“*.xml”))
循环遍历python列表
pngs
xmls
,并使用输出路径对象位置中的enumerate索引指定的名称写下所选文件的二进制数据

对于num,枚举中的文件(pngs):
write_here=out_dir/“{}.png”。格式(num)
在此处写入。写入字节(file.read\u bytes())
对于num,枚举中的文件(xmls):
write_here=out_dir/“{}.xml”。格式(num)
在此处写入。写入字节(file.read\u bytes())
从指定的路径对象中删除所有内容。
然后删除路径对象。 并将临时路径对象重命名为刚刚删除的旧路径

用于目录.iterdir()中的文件:
文件。取消链接()
directory.rmdir()目录
输出目录重命名(目录)

我不明白!!你想干什么!所以你有文件夹注释,比如
0.png
1.xml
。。。您想根据您的计数器重命名它们吗??我是说我不懂那部分。你到底想干什么!假设你有像
0.png
1.png
<代码>10.png。现在,当你在你的基本文件夹中将say
0.png
重命名为
10.png
时,你已经有了
10.png
,这就是为什么重命名时显示文件存在错误告诉我你在做什么,我可能会用另一种方法帮助你:)目前你的问题很难理解,因为你发布的代码不正确格式化。你能重新修改你的代码使它看起来正确吗?将实际错误添加到您的问题中也很有帮助,包括回溯您需要使用“@”符号提及用户,否则我们将不会收到您的评论通知。因此,在写评论之前,只需在评论中添加“@name!!:)评论不用于扩展讨论;这段对话已经结束。