首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件夹的每个.txt文件读取第5行

从文件夹的每个.txt文件读取第5行
EN

Stack Overflow用户
提问于 2021-02-21 12:22:28
回答 1查看 85关注 0票数 0

我有多个.txt文件(O1test、O2test、O3test、O4test)

代码语言:javascript
复制
text of 01test(hello,my,friend,sorry,newbie)
text of 02test(hello,my,friend,sorry,newbie)
text of 03test(hello,my,friend,sorry,noob)
text of 04test(hello,my,friend,sorry,amatuer)

输出txt文件可能如下所示

代码语言:javascript
复制
Newbie
01test
02test
Noob
O3test
Amatuer
O4test

正如您所看到的,我需要写一个文件名和第XX行文本,然后再写一个文件名和第XX行文本,但是如果第xxth和前面的行相同,那么接下来再写。

我试过了但现在我被困住了。

代码语言:javascript
复制
import os
for root, dirs, files in os.walk("C:\\Users\\42077\\Desktop\\test\\"):
    for file in files:
        if file.endswith(".txt"):

             with open("C:\\Users\\42077\\Desktop\\test\\!output.txt", "a") as f: as f
                 f.write(os.path.join( file)+"\n")
EN

回答 1

Stack Overflow用户

发布于 2021-02-21 12:40:21

如何读取第五行:打开文件,在数行的同时循环这些行;到达第五行时停止。

代码语言:javascript
复制
def get_nth(filename, n):
    """
    Return the nth line from filename
    """
    with open(filename) as lines:
        for idx, line in enumerate(lines, 1):
            if idx == n:
                return line.rstrip('\n')
    raise ValueError('file %s only has %i lines' % (filename, idx))

如果文件有更少的行,应该发生什么?我决定提出一个错误,但不同的设计当然是可能的。

若要组织一组值及其所在文件的结果,请使用列表的dict

代码语言:javascript
复制
import glob
from collections import defaultdict

where = defaultdict(list)
for filename in glob.glob('*test'):
    where[get_nth(filename, 5)].append(filename)

循环遍历生成的dict并打印结果应该是相当明显的;我将此作为练习。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66302257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档