首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >os.scandir()在循环中为find()创建问题

os.scandir()在循环中为find()创建问题
EN

Stack Overflow用户
提问于 2019-01-16 14:18:37
回答 1查看 127关注 0票数 0

我尝试在从os.scandir()派生的文件名中查找字符串,比如在'ilikecake15.pdf‘或'ilike1615cake.pdf’中的字符串'15‘。这段代码的背景:我有几个包含pdf的文件夹,我需要将它们与列表进行匹配。文件名包含列表中字符串的一部分。我认为使用to for循环可以做到这一点,从txt中获取信息。另一个来自os.scandir()和find(),用于检查!= -1。

故障排除给med留下了两个.txt值,我尝试与s.find(ins)进行比较。我的目标是整理出!= -1。如果我定义v1和v2并执行v1.find(v2),它似乎可以工作,但在嵌套的for循环中,所有内容都是-1。(即使我看到正确的比赛)我已经使用xx从文本文件中删除了像G:\thispath\和\thispath这样的路径信息。甚至尝试将str()添加到几乎所有内容(以防万一)

代码语言:javascript
运行
AI代码解释
复制
import os
tdpath = 'G:\Somepathwithalotofpdfs'
tdfiles = 'G:\Anothersuitablepath/tdfiles.txt'
tdlines = 'G:\Anothersuitablepath/tdlines.txt'
with os.scandir(tdpath) as pth, open(tdfiles, 'w') as fls:
    for td in pth:
        if td.is_file():
            fls.write(str(os.fsdecode(td)[51:])) #str and [51:] added to help troubleshoot
            fls.write('\n')

with open(tdlines) as fp, open(tdfiles) as fls:
    for cnt, line in enumerate(fp):
        for cmt, lajn in enumerate(fls):
            print(lajn, line) #just troubleshooting
            print(str(lajn).find(str(line))) #just troubleshooting
            if lajn.find(line) != -1:
                print('KASWSOFJIDFHAIFHSIHFIAHS') # Hlep ples

在尝试解决它时,这已经变成了一个怪物。但预期的结果是在tdfiles.txt中的文件tdlines.txt中找到匹配项时打印后一条语句

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-16 15:42:43

我不确定我是否完全理解您描述的问题的本质,但我确实看到了一件事,几乎可以肯定的是,它的行为并不像您所期望的那样。

一旦您遍历了打开的文件对象的所有行,再次尝试遍历它将不会产生任何结果,因为跟踪文件中工作位置的内部指针现在位于末尾。因此,对于tdlines的第一行,您的循环将按照预期运行,但对于其余行,内部for循环将永远不会运行。

解决方案是在每次迭代时通过tdlines关闭并重新打开tdfiles,或者在内部for循环之前用seek()返回文件的开头。下面是后一种方法:

代码语言:javascript
运行
AI代码解释
复制
with open(tdlines) as fp, open(tdfiles) as fls:
    for cnt, line in enumerate(fp):
        fls.seek(0)
        for cmt, lajn in enumerate(fls):
            if lajn.find(line) != -1:
                print('KASWSOFJIDFHAIFHSIHFIAHS')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54219051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档