如何使用Python跳过文件中的两行?

如何使用Python跳过文件中的两行?,python,dictionary,count,line,Python,Dictionary,Count,Line,我有一系列文件,我想从每个文件中提取一个特定的数字。 在每个文件中,我都有一行: name, registration num 之后正好两行是注册号。我想从每个文件中提取这个数字。并把它作为一本字典的价值。有人知道这是怎么可能的吗 我当前的代码实际上不起作用,如下所示: matches=[] for root, dirnames, filenames in os.walk('D:/Dataset2'): for filename in fnmatch.filter(filename

我有一系列文件,我想从每个文件中提取一个特定的数字。 在每个文件中,我都有一行:

name, registration num
之后正好两行是注册号。我想从每个文件中提取这个数字。并把它作为一本字典的价值。有人知道这是怎么可能的吗

我当前的代码实际上不起作用,如下所示:

matches=[]
for root, dirnames, filenames in os.walk('D:/Dataset2'):  
    for filename in fnmatch.filter(filenames, '*.txt'):   
        matches.append([root, filename])

filenames_list={}       
for root,filename in matches:
    filename_key = (os.path.join(filename).strip()).split('.',1)[0]

    fullfilename = os.path.join(root, filename)
    f= open(fullfilename, 'r')
    for line in f:
        if "<name, registration num'" in line:
            key=filename_key
            line+=2
            val=line
匹配=[]
对于os.walk('D:/Dataset2')中的root、dirname和文件名:
对于fnmatch.filter(文件名,*.txt')中的文件名:
匹配。追加([根目录,文件名])
文件名\u列表={}
对于根目录,匹配项中的文件名:
filename_key=(os.path.join(filename.strip()).split('.',1)[0]
fullfilename=os.path.join(根目录,文件名)
f=打开(完整文件名'r')
对于f中的行:

如果“我想那样做会有用的话

f= open(fullfilename, 'r')
for line in f:
    if "name, registration num" in line:
        key=filename_key
        break
f.readline()
res = f.readline()[:-1] #removed trailin newline

一般来说,如果你想对循环中的python迭代器做些什么,比如向前看两步,我发现第一个好的地方是导入itertools并查看。在你的例子中,你可能会从他们的
消费
实现中受益

值得一看的是,这个问题以前是否还没有被讨论过。
编辑:的确-看,其中包括对python迭代器的良好讨论。

一种方法是将整行加载到数组中,然后从中读取所需的行。示例

名为testfile的文件包含以下内容:

A1
B2
C3
D4
E5
程序test.py:

#!/usr/bin/env python

file = open('testfile')
lines = file.readlines()[2:]
file.close()

for line in lines:
    print(line.strip())
输出:

$./test.py
C3
D4
E5
编辑:我再次阅读了问题,注意到您只需要一行。然后您可以删除
,然后使用
f.getlines()[2]
获取文件中的第三行


  • 或者可以使用f.getline()三次,忽略前两次

  • 或者您可以在f
类型循环中为行使用
,而忽略前两行(使用递增计数器)

当我想跳过一行时,我通常使用
next()
,通常是文件的标题

with open(file_path) as f:
    next(f) # skip 1 line
    next(f) # skip another one.
    for line in f:
        pass # now you can keep reading as if there was no first or second line.

注意:在Python 2.6或更早版本中,您必须使用
f.next()

问题是,首先我必须在所有文件中找到具有该模式的文件,然后选择其中的第二行。您的解决方案如何可能?@AshwiniChaudhary,谢谢,补充回答。
with open(file_path) as f:
    next(f) # skip 1 line
    next(f) # skip another one.
    for line in f:
        pass # now you can keep reading as if there was no first or second line.