python - Python根据同一目录中的文件重命名文件
问题描述
我有一个像这样的文件目录结构:
/文件夹
- aaa.pdf
- bbb.xml
- 盖章.pdf
PDF 和 XML 文件名没有任何模式,除了每个文件夹都有 stamped.pdf (stamped.pdf 需要忽略)。
我想重命名目录中的 .xml 文件以匹配 .pdf 文件名,所以我最终得到:
/文件夹
- aaa.pdf
- aaa.xml
- 盖章.pdf
Python 到目前为止(还没有重命名任何东西,只是试图在此时获取文件名)
import os
pdf = ('.pdf')
xml = ('.xml')
stamped = ('stamped.pdf')
for folderName, subfolders, filenames in os.walk('folder'):
print('The current folder is ' + folderName)
for filename in filenames:
namefile = os.path.splitext(filename)[0]
if (filename.endswith(pdf) and filename != stamped):
pdfname = namefile
print('PDF File Name: ' + pdfname)
if filename.endswith(xml):
print('RENAME XML FILE NAME: ' + namefile + 'TO: ' pdfname)
else:
print('')
print('')
现在我只是在重命名之前打印值。
在上面的脚本中, pdfname 在 XML 条件中未定义,因为 pdfname 变量在 XML 条件中未设置/可用。
如何传递 pdfname 变量,以便它可以用于重命名同一目录中的 XML 文件?
谢谢!
解决方案
import os
for parent, _, files in os.walk('.'):
if not files:
continue
pdf_file = None
xml_file = None
for filename in files:
if filename.lower().endswith('.pdf') and filename.lower() != 'stamped.pdf':
pdf_file = filename
elif filename.lower().endswith('.xml'):
xml_file = filename
new_xml_filename = '{}/{}.xml'.format(parent, os.path.splitext(pdf_file)[0])
xml_file = '{}/{}'.format(parent, xml_file)
if os.path.exists(new_xml_filename):
print('cannot rename %s without overwriting an existing file. skipping' % xml_file)
continue
else:
os.rename(xml_file, new_xml_filename)
print('renamed {} -> {}'.format(xml_file, new_xml_filename))
推荐阅读
- c - 使用链表在 C 中实现一个基本的 Linux 文件系统
- javascript - (JS, Promise) 如何等待来自多个 map 函数的 Promise
- excel - 过滤器处于活动状态时,ActiveCell.Offset 不起作用
- python - 仅用零填充左 NaN 的最 Pythonic 方式是什么?
- reactjs - Material-UI 在打开对话框时向 body 标签添加填充
- sql - 在 PostgreSQL 中使用 SELECT from RETURNING while UPDATE
- java - 如何在运行时编辑方法注释属性?
- button - GTK3中ButtonBox的控制宽度
- javascript - Japavascript 和 P5.js - 优化 4D 投影代码
- docker - 启动 Docker 卷并为其命名