读取文件列表并检查目录中的文件';使用Python的存在

读取文件列表并检查目录中的文件';使用Python的存在,python,python-2.7,Python,Python 2.7,我希望有人能想出一个好主意。虽然我已经看到了一些我认为我需要的东西,但我还没有看到它在这里得到很好的回答 我想要一个Python脚本来读取一个文本文件,并检查该文本文件中列出的每个文件名是否存在。然后我希望它将真值和假值写入text/csv 源文本文件(称为dirlist)如下所示: file1.pdf file2.pdf 我的Python仅限于搜索互联网和拼凑东西。我在努力学习 我在想: with open("dirlist") as f: for line in f:

我希望有人能想出一个好主意。虽然我已经看到了一些我认为我需要的东西,但我还没有看到它在这里得到很好的回答

我想要一个Python脚本来读取一个文本文件,并检查该文本文件中列出的每个文件名是否存在。然后我希望它将真值和假值写入text/csv

源文本文件(称为dirlist)如下所示:

file1.pdf
file2.pdf
我的Python仅限于搜索互联网和拼凑东西。我在努力学习

我在想:

with open("dirlist") as f:
    for line in f:
        if os.path.exists():
            open("status", 'w')
            write TRUE
        else:
            open("status", 'w')
            write FALSE
我知道这不是蟒蛇式的,可能很难看!有什么想法吗

outfile = open("out.csv","w")
with open("dirlist") as f:
     result = list(map(os.path.exists,f))
     outfile.write(str(result).upper()[1:-1])
outfile.close()
你可能需要这样做

result = list(map(lambda fname:os.path.exists(fname.strip()),f))

您的想法基本上是正确的,但您可以稍微简化代码:

with open('dirlist', 'r') as f, open('status', 'w') as status:
    for line in f.readlines():
        exists = os.path.exists(line)
        status.write(str(exists).upper())

请注意,通过这种方式,我们确保
'status'
的文件句柄不会泄漏(通过将其包含在
with
语句中)。我们也不需要使用
if
语句,只需将
os.path.exists()的布尔返回值字符串化即可。在此处使用
f.readlines()
可确保在每行末尾不会出现换行字符(
\n
\r
\r\n
,具体取决于您的操作系统)

谢谢!如何将字符串布尔返回写入新行?现在,它在一行中返回“TRUETRUE”。在
status.write()
行之后,只需添加
status.write('\n')
。或者,将
status.write()
行更改为
status.write(str(exists).upper()+'\n')
。好吧,现在我有一个空格问题。吐出我的dirlist.txt文件的批处理过程很可能是罪魁祸首。我相信Python会将每一行的返回值读取为空白,因此在文件实际存在时返回FALSE。我可以在这里使用通配符吗?@user3298895您应该做的是在
for
循环中处理
line
,以确保没有垃圾字符。使用
line=line.strip()
删除前导和尾随空格可能很有用。