python文件查找
『壹』 python從文件中查找數據並輸出
#注意,這里的代碼用單空格縮進
importre
#寫上你的文件夾路徑
yourdir=""
keywordA="keywordA"
keywordB="keywordA(d+)"
files=[os.path.join(yourdir,f)forfinos.listdir(yourdir)]
withopen("out.txt","w")asfo:
forfinfiles:
fname=os.path.basename(f)
withopen(f,"r")asfi:
forlineinfi:
ifline.strip():
searchA=re.search(keywordA,line.strip())
ifsearchA:
searchB=re.search(keywordB,line.strip())
ifsearchB:
print(fname,serachB.groups()[0],sep=" ",file=fo)
『貳』 python3在文件夾中查找指定文件方法封裝
不是人人都能活的低調,可以低調的基礎是隨時都能高調。
上一篇: configobj讀寫.ini配置文件方法封裝
下一篇: python3使用hmac、hashlib加密字元串方法封裝
本篇文章介紹一種方法在文件夾中查找指定文件:
1、方法【get_all_file】:根據給出的路徑進行遞歸,找到文件夾下所有的文件,以生成器的方式返回(佔用內存低),也可以添加到列表(list)(佔用內存高)。
2、方法【expand_list】:遞歸嵌套列表,展開列表,此步驟根據數據結構,如果自己的文件的地址是多層嵌套的列表,可以使用該方法展開列表。
3、方法【find_file】:查找指定文件。
以上方法根據自己的需求進行選擇使用,有不足的地方,請各位大佬指出。
如果感覺本文對您有幫助可以點個贊哦
本文僅供交流學習,請勿用於非法途徑
僅是個人意見,如有想法,歡迎留言
『叄』 python怎麼兩兩查找多個文件相同內容
可以用 difflib庫,下面給一個例子,具體需求自己研究
假如在同一個目錄下有a.txt, b.txt 兩個文本文件
a.txt 內容是
aaa
bbb
b.txt內容是
aaa
ccc
import difflib
a = open('a.txt', 'U').readlines()
b = open('b.txt', 'U').readlines()
diff = difflib.ndiff(a, b)
sys.stdout.writelines(diff)
結果是:
aaa
- bbb+ ccc
『肆』 python 文本文件中查找指定的字元串
編寫一個程序,能在當前目錄以及當前目錄的所有子目錄下查找文件名包含指定字元串的文件,並列印出絕對路徑。
import os
class SearchFile(object):
def __init__(self,path='.'):
self._path=path
self.abspath=os.path.abspath(self._path) # 默認當前目錄
def findfile(self,keyword,root):
filelist=[]
for root,dirs,files in os.walk(root):
for name in files:
fitfile=filelist.append(os.path.join(root, name))
#print(fitfile)
print(os.path.join(root, name))
#print(filelist)
print('...........................................')
for i in filelist:
if os.path.isfile(i):
#print(i)
if keyword in os.path.split(i)[1]:
print('yes!',i) # 絕對路徑
#else:
#print('......no keyword!')
def __call__(self):
while True:
workpath=input('Do you want to work under the current folder? Y/N:')
if(workpath == ''):
break
if workpath=='y' or workpath=='Y':
root=self.abspath # 把當前工作目錄作為工作目錄
print('當前工作目錄:',root)
dirlist=os.listdir() # 列出工作目錄下的文件和目錄
print(dirlist)
else:
root=input('please enter the working directory:')
print('當前工作目錄:',root)
keyword=input('the keyword you want to find:')
if(keyword==''):
break
self.findfile(keyword,root) # 查找帶指定字元的文件
if __name__ == '__main__':
search = SearchFile()
search()
『伍』 用python實現一個本地文件搜索功能。
import re,os
import sys
def filelist(path,r,f):
"""
function to find the directions and files in the given direction
according to your parameters,fileonly or not,recursively find or not.
"""
file_list = []
os.chdir(path)
filename = os.listdir(path)
if len(filename) == 0:
os.chdir(os.pardir)
return filename
if r == 1: ##
if f == 0: # r = 1, recursively find directions and files. r = 0 otherwise.
for name in filename: # f = 1, find files only, f = 0,otherwise.
if os.path.isdir(name): ##
file_list.append(name)
name = os.path.abspath(name)
subfile_list = filelist(name,r,f)
for n in range(len(subfile_list)):
subfile_list[n] = '\t'+subfile_list[n]
file_list += subfile_list
else:
file_list.append(name)
os.chdir(os.pardir)
return file_list
elif f == 1:
for name in filename:
if os.path.isdir(name):
name = os.path.abspath(name)
subfile_list = filelist(name,r,f)
for n in range(len(subfile_list)):
subfile_list[n] = '\t'+subfile_list[n]
file_list += subfile_list
else:
file_list.append(name)
os.chdir(os.pardir)
return file_list
else:
print 'Error1'
elif r == 0:
if f == 0:
os.chdir(os.pardir)
return filename
elif f == 1:
for name in filename:
if os.path.isfile(name):
file_list.append(name)
os.chdir(os.pardir)
return file_list
else:
print 'Error2'
else:
print 'Error3'
'''
f = 0:list all the files and folders
f = 1:list files only
r = 1:list files or folders recursively,all the files and folders in the current direction and subdirection
r = 0:only list files or folders in the current direction,not recursively
as for RE to match certern file or dirction,you can write yourself, it is easier than the function above.Just use RE to match the result,if match,print;else,pass
"""
『陸』 Python—多線程文件名稱查找
該腳本的功能為:
對某一文件夾啟動任意個線程查找文件包含XXX字元的文件名,並顯示該文件所在的路徑
運行結果:
還沒有進一步優化,歡迎大家留言評論,幫助小白改進腳本(✪ω✪)。