我有一个读取多个文本文件并打印最后一行的代码。
from glob import glob
text_files = glob('C:/Input/*.txt')
for file_name in text_files:
with open(file_name, 'r+') as f:
lines = f.read().splitlines()
last_line = lines[-3]
print (last_line)
我想重定向打印到输出txt文件,这样我将检查句子。txt文件也有多行空间。我想删除所有的空行,并获得文件的最后一行到输出文件。当我尝试写它是只写最后读文件。并非所有文件最后一行都被写入。
有人能帮忙吗?
谢谢,阿鲁什
不要只是打印,做这样的事情:
print(last_line)
with open('output.txt', 'w') as fout:
fout.write(last_line)
或者您也可以附加到文件中!
我想你有两个不同的问题
下次使用堆栈溢出时,如果您有多个问题,请分别发布。
如何将打印
功能的输出重新定向到文件<例如,考虑一个Hello World计划:
print("hello world")
我们如何在当前工作目录中创建一个文件(命名为类似于text_file.txt
),并将print语句输出到该文件?
将print
函数的输出写入文件非常简单:
with open ('test_file.txt', 'w') as out_file:
print("hello world", file=out_file)
请注意,print
函数接受一个名为“file
”的特殊关键字参数
您必须编写file=f
,才能将f
作为输入传递给print
函数。
如何从s文件中获取最后一个非空行?我有一个输入文件,它有很多换行符、回车符和结尾的空格字符。我们需要忽略空行,并检索文件的最后一个留置权,该留置权至少包含一个非空白字符的字符。
def get_last_line(file_stream):
for line in map(str, reversed(iter(file_stream))):
# `strip()` removes all leading a trailing white-space characters
# `strip()` removes `\n`, `\r`, `\t`, space chars, etc...
line = line.strip()
if len(line) > 0:
return line
# if the file contains nothing but blank lines
# return the empty string
return ""
您可以这样处理多个文件:
file_names = ["input_1.txt", "input_2.txt", "input_3.txt"]
with open ('out_file.txt', 'w') as out_file:
for file_name in file_names:
with open(file_name, 'r') as read_file:
last_line = get_last_line(read_file)
print (last_line, file=out_file)