读取文件列表并检查目录中的文件';使用Python的存在
我希望有人能想出一个好主意。虽然我已经看到了一些我认为我需要的东西,但我还没有看到它在这里得到很好的回答 我想要一个Python脚本来读取一个文本文件,并检查该文本文件中列出的每个文件名是否存在。然后我希望它将真值和假值写入text/csv 源文本文件(称为dirlist)如下所示:读取文件列表并检查目录中的文件';使用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:
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()
删除前导和尾随空格可能很有用。