需要修复Python输出(格式化)

需要修复Python输出(格式化),python,python-3.x,Python,Python 3.x,这是脚本,但是我在格式方面有问题。请参阅下面的所需输出 第二个问题是为什么输出上显示None?我想把它去掉 script.py import socket from contextlib import closing port = 22 def check_socket(host, port): with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock: if sock.connec

这是脚本,但是我在格式方面有问题。请参阅下面的所需输出

第二个问题是为什么输出上显示
None
?我想把它去掉

script.py

import socket
from contextlib import closing

port = 22

def check_socket(host, port):
    with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
        if sock.connect_ex((host, port)) == 0:
            print(f'{host} - port {port} is open')
        else:
            print(f'{host} - port {port} is closed')

with open('ip.txt','r') as f:
    for host in f:
        print(check_socket(host, port))
ip.txt

127.0.0.1
127.0.0.10
127.0.0.15
输出

user@linux:~$ python script.py 
127.0.0.1
 - port 22 is open
None
127.0.0.10
 - port 22 is open
None
127.0.0.15 - port 22 is open
None
user@linux:~$ 
期望输出

user@linux:~$ python script.py 
127.0.0.1 - port 22 is open
127.0.0.10 - port 22 is open
127.0.0.15 - port 22 is open
user@linux:~$ 

您在中读取的行包含换行符。您正在打印一个函数的返回值,该函数不返回任何内容,即不返回任何内容。
checksocket(host.strip(),port)
也许您的目的是从
check\u socket()
返回这些字符串,以便它们可以在
循环中打印。感谢@Todd的提示,我修复了新行问题。但尚未解决任何问题。Sabrina,上面《疯狂物理学家》的第一条评论正是对这个问题的描述。只需执行以下操作:
返回f'{host}-端口{port}已打开'
-或者不要将check_socket()调用放在print语句中。读入的行包含换行符。您正在打印一个函数的返回值,该函数不返回任何内容,即不返回任何内容。
checksocket(host.strip(),port)
也许您的目的是从
check\u socket()
返回这些字符串,以便它们可以在
循环中打印。感谢@Todd的提示,我修复了新行问题。但尚未解决任何问题。Sabrina,上面《疯狂物理学家》的第一条评论正是对这个问题的描述。只需执行:
返回f'{host}-端口{port}已打开'
-或者不要在print语句中调用check_socket()。