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

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

运行结果↑

...全文
156 点赞 收藏 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)
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
脚本语言
创建于2007-08-27

3.7w+

社区成员

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

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

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

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

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