您如何从目录中的所有文件中读取行?

How do you read lines from all files in a directory?

我在一个目录中有两个文件。我想阅读每个文件中的行。不幸的是,当我尝试使用以下代码执行此操作时,没有输出。

from pathlib import Path 

p = Path('tmp')
for file in p.iterdir():
   print(file.name)

functions.py
test.txt

for file in p.iterdir():
    f = open(file, 'r')
    f.readlines()

您应该从 text.py

打印这样的数据
count = 1
f = open(file, 'r')
Lines = f.readlines()
for line in Lines:
    count += 1
    print("Line {}: {}".format(count, line.strip()))

输出将如下所示:

Line 1: ...
Line 2: ...
Line 3: ...

您可以在此处查看阅读行示例 - Line reading

您可以使用 fileinput:

import os
import fileinput

for line in fileinput.input(os.listdir('.')):
    print(line)

您正在读取文件中的所有行,但没有输出它们。如果要将行打印到标准输出,则需要像在第一个示例中那样使用 print()

您还可以使用上下文和更多迭代器更优雅地编写此代码:

from pathlib import Path 

file = Path('test.txt')
with file.open() as open_file:
    for line in open_file:
        print(line, end="")

test.txt:

Spam
Spam
Spam
Wonderful
Spam!
Spamity
Spam

结果:

Spam
Spam
Spam
Wonderful
Spam!
Spamity
Spam

使用上下文打开文件 (with file.open()) 意味着您固有地设置了关闭文件,而行的迭代器 (for line in open_file) 意味着您没有加载整个文件一次(大文件的重要考虑因素)。

print() 中设置 end="" 是可选的,具体取决于源文件的结构,否则您可能最终会在输出中打印额外的空白行。