繁体   English   中英

Python 将 IP 地址存储在变量中

[英]Python Store IP address in a variable

我是 Python 编程新手,无法将 IP 地址存储在变量 (ip) 中

ip = input("Enter IP address: ")

# 192.168.0.1 (Example)

print ("you entered: "+ip)

我收到一条错误消息,不知道该怎么办。

我认为您正在使用 Python 2.x。 如果是这样,则input将其输入评估为真正的 Python 代码。

换句话说,当您输入192.168.0.1 ,会引发SyntaxError因为输入包含非法语法:

>>> input()
192.168.0.1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    192.168.0.1
            ^
SyntaxError: invalid syntax
>>>

要解决此问题,您需要改用raw_input

ip = raw_input("Enter IP address: ")

input不同, raw_input总是返回一个字符串对象:

>>> raw_input()
192.168.0.1
'192.168.0.1'
>>>

如果您不想担心Python 2.xPython 3.x ,请使用sys.stdin读取输入,使用sys.stdout打印到该部分的输出。

import sys

sys.stdout.write("Enter IP address: ")
sys.stdout.flush()
ip = sys.stdin.readline()
print("you entered: " + ip)

输出:

Enter IP address: 192.168.1.1
you entered: 192.168.1.1
ip = raw_input("Enter Target IP =>")
if ip >0:
    print("=>" + ip )

您必须添加raw_input才能添加整个自定义 IP 地址。 如果仍然显示错误,则可能需要将ip转换为字符串。

我在这里没有看到这个解决方案,所以发布。 希望这对其他人有帮助。

双方的Python 2.x和3.x运行这个解决方案会奏效 当需要我的脚本在两个 Python 版本之间兼容时,我遇到了这个问题。

raw_input()在 2.x 上工作,在 3.x 上抛出异常

input()无法读取 2.x 上的 ip 地址格式输入(例外),3.x 有效

解决方案

try:
    ip_address = raw_input('Enter IP Address: ')  
except:
    ip_address = input('Enter IP Address: ')

无论此解决方案中的 Python 版本如何, ip_address都将是输入的 ip 地址的str

PS:您可以通过以下方式检查输入的地址是否是有效的IP地址:

import re
if not re.match(r'[0-9]+(?:\.[0-9]+){3}', ip_address):
    print('Invalid IP Address')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM