37,720
社区成员
发帖
与我相关
我的任务
分享
# -*- 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是移动盘
运行结果↑
find不是模糊匹配
你的这一句 if (line.find(file))>-1:中,line是源文件名,是带后缀.txt的,你的file是dst中的文件名,也是带后缀.txt的,所以只有3.01.000012.txt被找到,如果不带文件后缀,肯定能匹配到。
花了精力,尝试看懂你的问题,但是仍没看懂。
所以麻烦你:
把line.find(file)
中的值,都打印出来,才能让人看懂,看出到底错在哪里。
比如改为:
print("file=%s, line=%s" % (file, line))
foundIndex = line.find(file)
print("foundIndex=%s" % foundIndex)