使用具有相同名称但扩展名不同的不同文件中的数据来获取行号

时间:2015-11-17 17:11:19

标签: python python-2.7 line extract

我使用以下代码:

 from collections import defaultdict
 import sys
 import os
 for doc in   os.listdir('path1'):
doc1 = "path1" + doc
doc2 = "path2" + doc

doc3 = "path3" + doc
with open(doc1,"r") as words:
    sent = words.read().split()
        print sent
    linenos = {}

    with open(doc2, "r") as f1:
            for i, line in enumerate(f1):
                for word in sent:
                        if word in line:
                            if word in linenos:
                                    linenos[word].append(i + 1)
                            else:
                                    linenos[word] = [i + 1]

    matched2 = []
    for word in sent:
            if word in linenos:
                matched2.append('%s %r' % (word, linenos[word][0]))
            else:
                matched2.append('%s <does not exist>' % word)
    with open(doc3,"w") as f1:
        f1.write( ', '.join(matched2))

所以,我的path1包含file1.title,file2.title等文件......直到file240.title

同样,我有path2,其中包含file1.txt,file2.txt等文件..直到tile240.txt

例如:

file1.title将包含以下数据:

military  troop deployment number need  

file1.txt将包含:

foreign 1242
military 23020
firing  03848
troop 2939
number 0032
dog 1234
cat 12030
need w1212

输出:

path3时/ FILE1.TXT

military 2, troop 4, deployment <does not exist>, number 5, need 8

基本上,代码获取file1.txt中存在的单词的行号,并且这些单词是从file1.title输入的。它适用于单个文件,例如一次输入单个文件。但我需要为一个装满文件的文件夹做这件事。

也就是说,它应该从file1.title中读取单词并从file1.txt中获取单词的行号,同样地,从file2.title中读取单词作为字符串,并从file2.txt中获取这些单词的行号。等...... ..

问题是,我无法使用此代码读取具有不同扩展名的相同文件。我应该如何修改它以获得适当的输出?

3 个答案:

答案 0 :(得分:2)

我猜你要求在文件名字符串中替换扩展名,如下所示:

doc2 = "path2" + doc[:-6] + ".txt"

doc中删除6个字符“.title”并添加扩展名“.txt”。

答案 1 :(得分:1)

你想做这样的事吗?

import os

for name in set([fname.split('.')[0] for fname in os.listdir('.') if fname.split('.')[1] in ['txt', 'title']]):
    f1 = open(''.join([name, '.txt'])).read()
    f2 = open(''.join([name, '.title'])).read()
    # Do whatever with the file contents

答案 2 :(得分:0)

我认为你只需要在open(docx,&#39; w&#39;)上写下文件的全名。例如,将doc1替换为&#39; file1.title&#39;和doc2到&#39; file1.txt&#39;,我不知道你做的是什么,但是当你要求提供文件时,扩展名很重要。