您如何从目录中的所有文件中读取行?
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=""
是可选的,具体取决于源文件的结构,否则您可能最终会在输出中打印额外的空白行。
我在一个目录中有两个文件。我想阅读每个文件中的行。不幸的是,当我尝试使用以下代码执行此操作时,没有输出。
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=""
是可选的,具体取决于源文件的结构,否则您可能最终会在输出中打印额外的空白行。