提问帖:为什么find的字符串中有“-”时会无法匹配?

Single兔兔 2021-08-04 21:56:59
# -*- coding: UTF-8 -*-
import os
def getFileNames(file_dir):
    FileNames = []
    fo = open("F:\srcnames.txt",'w')
    for root,dirs,files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.txt':
                fo.write(file)
                
                fo.write('\n')
    return True

def compareNames():
    file_dir = "F:\dst"
    fo = open("F:\srcnames.txt",'r')
    #file_dir = input()
    for root,dirs,files in os.walk(file_dir):
        for file in files:
            print("=========")
            for line in fo:
                line = line.rstrip('\n')
                #print(line)
                if (line.find(file))>-1:#若不为-1
                    #temp = [] 
                    #temp = line.rstrip('-*')
                    print(line)
                    print("found!")
                    os.rename('F:\\dst\\'+file,'F:\\dst\\'+line)
                    break
                else:
                    print("cannot find!")
            fo.seek(0)
            #print(file)





file_dir = "F:\src"
#file_dir = input()

getFileNames(file_dir)
compareNames()
#F是移动盘

运行结果↑

...全文
491 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2021-08-06
  • 打赏
  • 举报
回复

find不是模糊匹配
你的这一句 if (line.find(file))>-1:中,line是源文件名,是带后缀.txt的,你的file是dst中的文件名,也是带后缀.txt的,所以只有3.01.000012.txt被找到,如果不带文件后缀,肯定能匹配到。

crifan 2021-08-05
  • 打赏
  • 举报
回复

花了精力,尝试看懂你的问题,但是仍没看懂。

所以麻烦你:

line.find(file)中的值,都打印出来,才能让人看懂,看出到底错在哪里。

比如改为:

print("file=%s, line=%s" % (file, line))
foundIndex = line.find(file)
print("foundIndex=%s" % foundIndex)

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧