我有包含腌索引文本的列表,如下图所示两个不同的目录,保存在.OUT格式的文件:的Python for循环都要经过目录中的文件
(LP0 S'TCCTCTTGGAGCACCAGCTAATATTTCATCAGTATTCGCTGAATCTTCGGACATAGTTCA” P1 aS'TTCGGACATAGTTCATTCATATTTATTTGCCCAATACCCGCACGAAGAAGCCTTGCAGAC“ P2 aS'AGAAGCCTTGCAGACACCGTGGCA” P3 一个。
我试图完成的任务是从犯罪嫌疑文本目录中打开一个文件,并比较它使用python的difflib将其添加到源文本目录中的每个文件,然后打印出一个数字,指示它们是否匹配,然后对可疑文本目录中的其余文件执行相同的操作。 (注:如果有人知道更详细的方式来比较索引文本的两个列表,我都听过,但它远不是优先级)
我目前的问题是用for循环来完成这个任务,它不起作用。我的意思是说,我可以循环浏览文件夹,并可以打印出文件夹名称,但是文件本身的内容不会改变。循环目前只是多次比较每个目录中的一个文件,我不知道如何解决它。
欢迎任何和所有建议,如果我的解释已经足够清楚,请随时提出任何问题。
谢谢。另外,我知道这是一个常见问题,我尽力去查看以前的答案并应用他们所用的内容,但由于我不擅长编程,所以我正在努力做到这一点。
在此先感谢!
˚F
代码如下:
import string
import pickle
import sys
import glob
import difflib
sourcePath = 'C:\Users\User\Sou2/*.out'
suspectPath = 'C:\Users\User\Susp2/*.out'
list_of_source_files = glob.glob(sourcePath)
list_of_suspect_files = glob.glob(suspectPath)
def get_source_files(list_of_source_files):
for source_file_name in list_of_source_files:
with open(source_file_name) as source_file:
sourceText = pickle.load(source_file)
return sourceText
get_suspect_files(list_of_suspect_files):
for suspect_file_name in list_of_suspect_files:
with open(suspect_file_name) as suspect_file:
suspectText = pickle.load(suspect_file)
return suspectText
def matching(sourceText,suspectText):
matching = difflib.SequenceMatcher(None,sourceText,suspectText)
print matching.ratio()
def main():
for suspectItem in list_of_suspect_files:
suspectText = get_suspect_files(list_of_suspect_files)
print ('----------------SEPERATOR-----------------')
for sourceItem in list_of_source_files:
sourceText = get_source_files(list_of_source_files)
matching(sourceText,suspectText)
main()
当前的结果:
----------------SEPERATOR-----------------
0.0
0.0
0.0
----------------SEPERATOR-----------------
0.0
0.0
0.0
----------------SEPERATOR-----------------
0.0
0.0
0.0
----------------SEPERATOR-----------------
0.0
0.0
0.0
这应该是1.0其中一些为我故意把匹配索引文本到文本系统。
谢谢你的更新凯文! – FrankN