将一个文件中的前14个字符匹配到另一个文件中的前14个字符?

问题描述

>>> import glob
>>> import os
>>> ws = r'C:\Users\maddy\Documents\20200506\CFSv2\pp'
>>> os.chdir(ws)

>>> ctl_files = glob.glob("daily_*.ctl")
>>> ctl_files
['daily_20200512.ctl','daily_20200519.ctl','daily_20200526.ctl','daily_20200602.ctl','daily_20200609.ctl','daily_20200616.ctl','daily_20200623.ctl','daily_20200630.ctl','daily_20200707.ctl','daily_20200714.ctl','daily_20200721.ctl','daily_20200728.ctl','daily_20200804.ctl','daily_20200811.ctl','daily_20200818.ctl','daily_20200825.ctl','daily_20200901.ctl']
>>> bin_files = glob.glob("daily_*.bin")
>>> bin_files
['daily_20200421.bin','daily_20200428.bin','daily_20200505.bin','daily_20200512.bin','daily_20200519.bin','daily_20200526.bin','daily_20200602.bin','daily_20200609.bin','daily_20200616.bin','daily_20200623.bin','daily_20200630.bin','daily_20200707.bin','daily_20200714.bin','daily_20200721.bin','daily_20200728.bin','daily_20200804.bin','daily_20200811.bin','daily_20200818.bin','daily_20200825.bin','daily_20200901.bin']

我希望最终结果是python打印所有文件名与daily_.bin文件匹配的daily_.ctl文件。我将专门在daily_.ctl文件上执行代码,我想看看是否有一种更简单的方法可以遍历每个ctl_file来显示哪些文件具有匹配的二进制文件,而不是自己查看每个文件。仅Daily_.ctl文件中的某些文件的前14个字符将具有匹配的daily_.bin文件,且文件的前14个字符相同。这些是我需要打印的ctl_files。我是python新手,所以我不确定如何入门,我只是将python用作ArcGis项目的一部分。我正在使用python shell 2.7.14

解决方法

您可以在.上拆分,并保持第一个元素有效地删除扩展名。然后只需检查ctl中哪个文件名在bin中即可。

[x for x in ctl_files if x.split('.')[0] in [i.split('.')[0] for i in bin_files]]