• 全部
  • 互动交流
  • 文章分享

提问帖:为什么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是移动盘

运行结果↑

...全文
127 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

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

回复
crifan 08-05

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

所以麻烦你:

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

比如改为:

print("file=%s, line=%s" % (file, line))
foundIndex = line.find(file)
print("foundIndex=%s" % foundIndex)
回复
发帖
脚本语言
创建于2007-08-27

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2021-08-04 21:56
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: