我有一个像这样的文件目录结构:
/文件夹
PDF和XML文件名中没有模式,只是每个文件夹中都带有stamped.pdf(stamped.pdf需要忽略)。
我想在目录中重命名.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('')
现在,我只是在重命名之前打印值。
在上面的脚本中,在XML条件中未定义pdfname,因为在XML条件中未设置pdfname变量。
如何传递pdfname变量,以便可以将其用于重命名同一目录中的XML文件?
谢谢!
答案 0 :(得分:0)
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))