Python脚本问题(列表显示为一个长字符串,而不是一个新行“\n”)

yrdbyhpb  于 2023-02-20  发布在  Python
关注(0)|答案(1)|浏览(120)

Python Script Output IMAGE
我正在写一个脚本,它将/etc/shadow输出到屏幕上的一个列表中,以呈现给查看者。然而,输出结果是一个长列表,而不是输出到每个换行符的列表。即使我尝试插入一个新行字符。我之前已经解决了这个问题,但将其更改为字典,然后在不工作时返回。我只希望它在每个影子文件行后打印:
代码:

with open('/etc/shadow', 'r') as file:
     lines = [line.rstrip() for line in file]
     print(lines)

输出:(无法附加的图像......)
预期输出是列表中每个元素之间的一个新行。然而,它只输出为每个列表之间的一个单行。我知道这是我做for循环的方式,或者至少这是我的猜测。然而,我无法理解它。(脚本新手)。谢谢。

okxuctiv

okxuctiv1#

lines是来自文件的list行。当你使用print(lines)时,你打印的是一个列表。

>>> print(["a", "b", "c" ])
['a', 'b', 'c']

您可以打印for循环中的每一行:

>>> for line in [ "a", "b", "c" ]:
...     print(line.rstrip())
...
a
b
c

或者你可以把join\n所有的行组合成一个字符串:

>>> print("\n".join(["a","b","c"]))
a
b
c

将行连接成一个字符串需要分配大量的内存,你可以通过在读取时输出行来将数据从文件中“流”出来,这样你就不必一次将它们都保存在内存中:

>>> with open("/etc/services") as f:
...     for line in f:
...             print(line.strip())

该方法可以读取任意大小的文件,因为它不会尝试同时在内存中保存所有行。

相关问题