Python \n在输出中不工作

Python \n在输出中不工作,python,newline,spacing,Python,Newline,Spacing,嗨,我目前的输出是: 根:::$6$AYGvv6$AYGvvvvvvvvvvv6$AY6$AY6$AY6$AY6$AYGvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv根::::$6$6$AY6$AY6$AY6$AY6$AYvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

嗨,我目前的输出是:

根:::$6$AYGvv6$AYGvvvvvvvvvvv6$AY6$AY6$AY6$AY6$AYGvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv根::::$6$6$AY6$AY6$AY6$AY6$AYvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv999:7::\n邮件::17110:0:99999:7:::\n操作员::17110:0:99999:7:::\n名称::17110:0:99999:7::\nftp::17110:0:99999:7:::\n网络::17110:0:99999:7:::\n系统总线代理:!!:17572:系统网络:!!:17572:ndbus:!!:17572:17572:ntss:!!:17572:17572:17572:17572:17599:0:99999:7::\n

从我的代码:

command = "cat /etc/shadow "
process = os.popen(command)
results = str(process.read())

我试图使它看起来像命令提示符中的表格形式,但由于某种原因,当我将其传输到python时,它确实执行新行函数\n不起作用。我的代码有什么问题?

您应该直接读取文件:

filename = '/etc/shadow'
with open(filename) as shadowfile:
    content = shadowfile.read()
    # or possibly lines = shadowfile.readlines()
您是否尝试打印输出,或者只是在解释器中看到results变量的内容?在后一种情况下,换行符将显示为\p,而printresults将生成您期望的结果

l = 'root:$6$aYGtvxKp/bl6Fv2y$sdZ3FbdJYQlP8VcfFZT.Y67We5EQmqcHW4I9Gl/3pXp8v4.nu9qMIEkmOcdRuD0lBTvEtnMHosEo7OEaYgG4E0::0:99999:7:::\nbin::17110:0:99999:7:::\ndaemon::17110:0:99999:7:::\nadm::17110:0:99999:7:::\nlp::17110:0:99999:7:::\nsync::17110:0:99999:7:::\nshutdown::17110:0:99999:7:::\nhalt::17110:0:99999:7:::\nmail::17110:0:99999:7:::\noperator::17110:0:99999:7:::\ngames::17110:0:99999:7:::\nftp::17110:0:99999:7:::\nnobody::17110:0:99999:7:::\nsystemd-bus-proxy:!!:17572::::::\nsystemd-network:!!:17572::::::\ndbus:!!:17572::::::\npolkitd:!!:17572::::::\ntss:!!:17572::::::\nsshd:!!:17572::::::\npostfix:!!:17572::::::\nchrony:!!:17572::::::\funky:$1$EgZiG263$4W/wMljYzhOqnupg9cJ7W/:17599:0:99999:7:::\n'
for i in l.split('\n'):
 print(i)
输出:

root:$6$aYGtvxKp/bl6Fv2y$sdZ3FbdJYQlP8VcfFZT.Y67We5EQmqcHW4I9Gl/3pXp8v4.nu9qMIEkmOcdRuD0lBTvEtnMHosEo7OEaYgG4E0::0:99999:7:::
bin::17110:0:99999:7:::
daemon::17110:0:99999:7:::
adm::17110:0:99999:7:::
lp::17110:0:99999:7:::
sync::17110:0:99999:7:::
shutdown::17110:0:99999:7:::
halt::17110:0:99999:7:::
mail::17110:0:99999:7:::
operator::17110:0:99999:7:::
games::17110:0:99999:7:::
ftp::17110:0:99999:7:::
nobody::17110:0:99999:7:::
systemd-bus-proxy:!!:17572::::::
systemd-network:!!:17572::::::
dbus:!!:17572::::::
polkitd:!!:17572::::::
tss:!!:17572::::::
sshd:!!:17572::::::
postfix:!!:17572::::::
chrony:!!:17572::::::    unky:$1$EgZiG263$4W/wMljYzhOqnupg9cJ7W/:17599:0:99999:7:::

你做过打印结果还是其他什么?也许您想发布一个。您似乎正在查看字符串的repr,其中换行符将显示为转义序列,不可打印字符也将显示为转义序列。这是不必要的复杂。printl将在一个尊重Unix换行的系统上产生完全相同的结果。printl已经足够了。