我正在尝试进行测试以检查sys.argv输入是否与RegEx的IP地址匹配...
作为一个简单的测试,我有以下......
import re
pat = re.compile("\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}")
test = pat.match(hostIP)
if test:
print "Acceptable ip address"
else:
print "Unacceptable ip address"
Run Code Online (Sandbox Code Playgroud)
但是,当我将随机值传递给它时,在大多数情况下会返回"可接受的IP地址",除非我有一个基本等同于的"地址" \d+
.
我有以下脚本(下面).这将返回URL的状态代码.它遍历文件并尝试连接到每个主机.唯一的问题是它在到达异常时显然会停止循环.
我已经尝试了很多东西来把它如何循环,但无济于事.有什么想法吗?
import urllib
import sys
import time
hostsFile = "webHosts.txt"
try:
f = file(hostsFile)
while True:
line = f.readline().strip()
epoch = time.time()
epoch = str(epoch)
if len(line) == 0:
break
conn = urllib.urlopen(line)
print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n"
except IOError:
epoch = time.time()
epoch = str(epoch)
print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n"
sys.exit()
else:
f.close()
Run Code Online (Sandbox Code Playgroud)
编辑: …
我环顾四周,但找不到任何东西.
基本上我想知道是否可以使用getpass.getpass()
argparse.
目前我有以下作为解决方法,我只是想知道是否有更好的方法:
import argparse
import getpass
parser = argparse.ArgumentParser(description="Some description")
parser.add_argument('-p', metavar="password", default="foobarblah123", help="password for user (default to prompt user)")
...
parsed_args = parser.parse_args()
args = vars(parsed_args)
user_pass = args['p']
if user_pass == "foobarblah123":
user_pass = getpass.getpass()
Run Code Online (Sandbox Code Playgroud)
我很确定这不是处理此问题的最佳方法,但是,需要为密码设置命令行选项...最佳实践与否.
谢谢.
每当工作允许时,我仍然沿着python工作......
我正在使用使用的脚本查询大量内部webUI urllib2.urlopen
.我想知道如何从每个请求中获取页面内容的大小.我似乎无法想出这个.
提前致谢,
MHibbin
我目前正在编写一个Python脚本来处理一些日志并重新格式化某些部分.部分脚本使用以下代码(作为示例):
var1,var2,var3=foo.split("|")
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.然而,如果有39个值,这可能看起来不那么好(取消Python的可读性因子),例如:
var1,var2,var3,...,var39=foo.split("|")
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来格式化这种结构?
谢谢
我试图让脚本工作,它将在查找csv文件中检查IP的存在,然后如果它存在,则取第三个元素并从另一个(第二个)文件中删除第三个元素.这是我所拥有的摘录:
for line in fileinput.input(hostsURLFileLoc,inplace =1):
elements = open(hostsLookFileLoc, 'r').read().split(".").split("\n")
first = elements[0].strip()
third = elements[2].strip()
if first == hostIP:
if line != third:
print line.strip()
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,我尝试过玩几个选项,但这是我最近的(疯狂)尝试.
我认为问题是有两个输入文件一次打开.
欢迎任何想法,
干杯
我试图找到答案,但似乎没有什么适合这个问题......
我想在一个简单的行中sys.argv
为一个变量分配一个简单的行,而不是执行以下操作:
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
var4 = sys.argv[4]
var5 = sys.argv[5]
var6 = sys.argv[6]
etc...
Run Code Online (Sandbox Code Playgroud)
这可能吗?
干杯,
MHibbin
我之前使用过如下语句,但是当我尝试使用类似的东西时,它会返回错误....
File "test.py", line 73
with open(hostsTxt, 'a+') as f1, open(hostsCSV,'a+') as f2, open(hostNameLook, 'a+') as f3, open(webHostsTxt,'a+') as f4:
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
上面一行的语法:
if hostName != "*" and hostIP != "*":
with open(hostsTxt, 'a+') as f1, open(hostsCSV,'a+') as f2, open(hostNameLook, 'a+') as f3, open(webHostsTxt,'a+') as f4:
Run Code Online (Sandbox Code Playgroud)
任何想法都会受到欢迎.