我将如何使用python执行此操作:
如果我有一个格式如下的字符串:
A..a.b.c
Run Code Online (Sandbox Code Playgroud)
使它像:
A.a.b.c
Run Code Online (Sandbox Code Playgroud)
但我事先不知道我有多少个点?
这就像linux中的tr -s函数
所以我写了一个简单的脚本,将一些行写入文件:
f = open('file.txt','w')
while(operator):
f.write("string")
f.close()
Run Code Online (Sandbox Code Playgroud)
问题是,当脚本运行时,文件仍为空,只有当脚本完成并关闭文件时,内容才会显示.发生了什么以及如何使脚本运行时脚本写入文件的内容立即可见?
我正在运行BackTrack 5来运行脚本.
我理解可插拔视图的工作原理.我目前不明白的是如何添加一个类扩展视图所需的登录.我目前这样做:
from flask.views import View
class ShowUsers(View):
def dispatch_request(self):
users = User.query.all()
return render_template('users.html', objects=users)
app.add_url_rule('/users/', view_func=ShowUsers.as_view('show_users'))
Run Code Online (Sandbox Code Playgroud)
那么如何强制登录这个类/函数?
我使用mysqldb插入一行:
def insertNewLog(self,uid,beginDate,endDate,logs):
qry1 = """INSERT INTO logs (owner,createDate,endDate,log) VALUES (%s,%s,%s,%s); """
cursor = self.db.cursor()
beginDate = int(time.mktime( beginDate.timetuple() ))
endDate = int(time.mktime( endDate.timetuple()))
print beginDate
print endDate
cursor.execute(qry1,(uid,beginDate,endDate,logs),)
print "inserted normally"
print "Number of rows inserted: %d" % cursor.rowcount
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
1337720045
1337740625
inserted normally
Number of rows inserted: 1
Run Code Online (Sandbox Code Playgroud)
但是当我在mysql shell中选择我的数据库时,我得到'空集'.我检查我的mysql日志,那里没有任何报告.我有点困惑.
我有一个继承自threading.Thread. 由于某种原因,线程不想启动。
这是我的代码:
import time,threading,re,socket
class PyWatch(threading.Thread):
filename = ""
def __init__(self,filename):
threading.Thread.__init__(self)
print "initiating..."
self.filename = filename
def run(self):
print "running..."
thefile = open (self.filename)
thefile.seek(0,2) # Go to the end of the file
while True:
line = thefile.readline()
if not line:
time.sleep(0.1) # Sleep briefly
continue
yield line
self.process(line)
def process(self,line):
ip = self.filterIPFromLine(line)
print ip
def filterIPFromLine(self,line):
ip = None
if '/var/ossec/active-response/bin/firewall-drop.sh' in str( line ).lower():
ip = re.match( "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" )
try:
socket.inet_aton(ip[0])
ip = …Run Code Online (Sandbox Code Playgroud) 我在使用包含一些重复ID的csv数据源时遇到了一些麻烦.然而,最终结果应该只有ID一次.因此,我们决定只采用我们看到的第一个实例并忽略任何其他实例.
目前我的代码是这样的:
id_list = list()
for item in datasource:
if item[0] not in id_list:
#process
id_list.append(item[0])
Run Code Online (Sandbox Code Playgroud)
问题是当列表增长时,性能会下降.我想知道是否有更有效的方法来跟踪已处理的ID?