Python 如果文本文件的行引用不存在的文件,则删除这些行

Python 如果文本文件的行引用不存在的文件,则删除这些行,python,cmd,Python,Cmd,我有一个文本文件(images1.txt)和.jpg名称列表,还有一个文件夹(Bones)和.jpg图像。所有图像名称正好是42个字符(包括文件扩展名),并且每个名称位于单独的一行,其中包含名称和有关图像的一些信息。例如: OO75768249870G_2018051_4A284DQ0-011628.jpg,1A4502432KJL459265,emergency OO75768249870G_2018051_4A284DQ0-011629.jpg,1A451743245122,appointm

我有一个文本文件(
images1.txt
)和
.jpg
名称列表,还有一个文件夹(
Bones
)和
.jpg
图像。所有图像名称正好是42个字符(包括文件扩展名),并且每个名称位于单独的一行,其中包含名称和有关图像的一些信息。例如:

OO75768249870G_2018051_4A284DQ0-011628.jpg,1A4502432KJL459265,emergency
OO75768249870G_2018051_4A284DQ0-011629.jpg,1A451743245122,appointment
这里,
.jpg
之后的所有内容都是我个人关于照片的笔记<代码>骨骼包含在
图像1
中命名的4000多个图像中的许多图像,但不是全部。使用命令提示符或python,如何从
images1
中删除对应于我的
Bones
文件夹中不存在的图像的行

谢谢

在python中:

import os

LEN_OF_FILENAME = 42

with open('images1.txt', 'r') as image_file:
    with open('filtered_images1.txt', 'w') as filtered_image_file:
        for line in image_file:
            image_name = line[:LEN_OF_FILENAME]
            path_to_image = os.path.join('Bones', image_name)
            if os.path.exists(path_to_image):
                filtered_image_file.write(line)

假设
images1.txt
Bones
在同一个文件夹中,如果您在该文件夹中运行上述Python脚本,您将得到
filtered\u images1.txt
。它将只包含在
Bones

中具有相应图像的行。此代码将读取image1.txt中的行,并使用Bones目录中文件所在的行创建image2.txt

@ECHO OFF
IF EXIST image2.txt (DEL image2.txt)
FOR /F "tokens=1,* delims=," %%f IN ('TYPE "image1.txt"') DO (
    IF EXIST "bones\%%~f" (ECHO %%f,%%g >>"image2.txt")
)
EXIT /B

我认为最简单的方法是使用:

rem/*以不区分大小写的方式搜索文件`images1.txt`中的行
rem的文件名位于目录“Bones”中,该目录与命名模式相匹配;
rem然后将所有匹配行写入临时文件:*/
dir/B/A:-D“Bones\
rem//用临时文件覆盖原始`images1.txt`文件:
移动/Y“images1.tmp”images1.txt“>nul

虽然他确实提到了文件名正好是42个字符,但为了安全起见,我还是会使用
image\u name=line.split(',')[0]
谢谢你,伊森和西德哈特!我的声望还不足以让我放弃投票,但我会尽我所能给你一张。顺便说一句,悉达思,我是“她”而不是“他”。)@悉达多·什舒尔卡,这是一个很好的观点。但是如果她明确地说分隔符是
,我会更愿意这样做你尝试了什么,你被困在哪里了?