SBF胜博发娱乐老虎机python中具有默认参数的函数如何使用reduce?

( SBF胜博发娱乐老虎机 )

如果我有这么一个函数:

def myadd(x,y,taged=True):
    if taged:
        return x+y
    else:
        print("taged is false!")

我想对该函数使用reduce来实现多个数据的加法,直接使用下面的方法:
reduce(myadd,[1,2,3,4,5,6])就能实现该功能;
但是,如果我想要在reduce里面的myadd修改默认参数,例如:
reduce(myadd(taged=False),[1,2,3,4,5,6]),就无法完成了;
当然该例子没有任何实际意义,但是经常遇到的的函数都是带这种默认参数的,可能还不止一个,求大神如何解决该问题?
顺便问一下,对于使用reduce的函数,是不是必须要有返回值?谢谢!

我想你需要的是闭包而不是这个,因为reduce接受的第一个函数必须是callable也就是可调用的函数,你把myadd加上参数以后他就是一个值了。所以报错, 当然你在必选参数也没有给值。我想你需要的是这个

def myadd(taged=True):
    def _myadd(x, y):
        if taged:
            return x+y
        else:
            print("taged is false!")
    return _myadd

a = reduce(myadd(taged=False), range(5))
print a

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

SBF胜博发娱乐老虎机flask web development,换成百度地图后仍然无法显示地理位置?

( SBF胜博发娱乐老虎机 )

{% extends "base.html" %}
{% block title %}Flasky-{{ user.username }}{% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>{{ user.username }}</h1>
    {% if user.name or user.location %}
    <p>
        {% if user.name %}{{ user.name }}{% endif %}
        {% if user.location %}
        From <a href="http://map.baidu.com/?q={{ user.location }}">
            {{ user.location }}
        </a>
    {% endif %}
    </p>
    {% endif %}
{% if current_user.is_administrator() %}
<p><a href="mainto:{{ user.email }}">{{ user.email }}</a></p>
{% endif %}
{% if user.about_me %}<p>{{ user.about_me }}</p>{% endif %}
<p>
    Member since {{ moment(user.member_since).format('L') }}.
    Last seen {{ moment(user.last_seen).fromNow() }}.
</p>
</div>
{% endblock %}

应该是地图的api使用的不对吧

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

SBF胜博发娱乐老虎机python里的双下划线函数都是什么意思?

( SBF胜博发娱乐老虎机 )

__module__
__new__
__reduce__
__repr__
__reduce_ex__
__getattribute__

隐藏属性,或者隐藏方法。

比如

>>> '33'.__hash__()
4038753864587545164
>>> '33'.__len__()==len('33')
True


>>> (3).__pow__(2)
9

>>> int.__pow__(3,2)
9

简单的说,就是hook。

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

sbf胜博发娱乐城Python作用域的问题

( sbf胜博发娱乐城 )

class Node(object):
    def __init__(self, data=None, next_=None):
        self.next_ = next_
        self.data = data

class LinkList(object):
    def __init__(self):
        self.head = None
        self.tear = None
    def insert(self, node):
        if self.head is None:
            # print("is None")
            self.head = node
            self.tear = node
            self.head.next_ = self.tear
        else:
            # print("tear")
            self.tear.next_ = node
            self.tear = node
    def display(self):
        # global node
        node = self.head
        if node is not None:
            print(node.data)
            node = node.next_

为了便于理解我把整段代码都贴上来了.
这是用Python实现链表的插入功能

问题出在LinkList类中的display()函数
不把变量node设置为global的话,if语句下面node = node.next_这句 ,被赋值的node是一个新的变量(PyCharm提示Shadows name ‘node’ from outer scope和Local variable ‘node’ value is not used)

如果把if语句改为while循环,if和display函数下面的node就都为同一个变量

请问问题出在哪里 ?
Python版本是3.5

python的变量作用域:
模块对应global,
最内层为local,
外层为nonlocal
变量查找顺序:内层作用域->外层->全局->builtin
只有class、def和lamda会改变作用域

读取变量的时候,如果local没有,查找nonlocal,然后global
写变量的时候,如果没有指明nonlocal/global, 就是在局部作用域定义一个新的变量
下面的例子摘自python tutorial第9章

def scope_test():
    def do_local():
        spam = "local spam"
    def do_nonlocal():
        nonlocal spam
        spam = "nonlocal spam"
    def do_global():
        global spam
        spam = "global spam"
    spam = "test spam"
    do_local()
    print("After local assignment:", spam)
    do_nonlocal()
    print("After nonlocal assignment:", spam)
    do_global()
    print("After global assignment:", spam)

scope_test()
print("In global scope:", spam)

你的代码,我在解释器和 PyCharm 里执行了都没有看到你说的问题。最好把执行的代码也贴出来,只看这些我也没看出有问题。

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

sbf胜博发娱乐城基于 flask 写了个博客和论坛

( sbf胜博发娱乐城 )

一个人写的确很累,尤其是在前端方面,有兴趣的可以看看,虽然有的代码很 low

演示地址:
论坛: https://forums.honmaple.org/
博客: https://honmaple.com/

源码地址:
论坛:github.com/honmaple/maple-bbs
博客:github.com/honmaple/maple-blog

pip install flask.ext.socketio

提示
Downloading/unpacking flask.ext.socketio
Could not fetch URL https://pypi.python.org/simple/flask.ext.socketio/: There was a problem co
ing routines:ASN1_item_verify:unknown message digest algorithm>
Will skip URL https://pypi.python.org/simple/flask.ext.socketio/ when looking for download lin
Could not fetch URL https://pypi.python.org/simple/: There was a problem confirming the ssl ce
tem_verify:unknown message digest algorithm>
Will skip URL https://pypi.python.org/simple/ when looking for download links for flask.ext.so
Cannot fetch index base URL https://pypi.python.org/simple/
Could not fetch URL https://pypi.python.org/simple/flask.ext.socketio/: There was a problem co
ing routines:ASN1_item_verify:unknown message digest algorithm>
Will skip URL https://pypi.python.org/simple/flask.ext.socketio/ when looking for download lin
Could not find any downloads that satisfy the requirement flask.ext.socketio
No distributions at all found for flask.ext.socketio

搜索了一下,要用 pip install flask_socketio
这样能安装成功

但是运行

from flask.ext.socketio import SocketIO

提示 from flask.ext.socketio import SocketIO, emit
ImportError: cannot import name SocketIO
换成 from flask_socketio import SocketIO 也一样

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

SBF胜博发娱乐老虎机elasticsearch 只查询 所有的ids ?

( SBF胜博发娱乐老虎机 )

只想拿到所有的ids,除了 matchall 之外,有没有简单的方法?

好像是的,因为ES毕竟是个搜索引擎,很多聚合功能也是通过搜索以后进行分析的,所以还是用matchall找到文档,返回所有的ids,如果文档太多,可以用分页或者Scroll查询,其实速度蛮快的。

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网关于python,正则表达式作为if判断条件的问题

( 胜博发游戏官网 )

有2000行链接需要进行爬虫处理,可分为以下三种类型,字体加粗。

https://www.coursera.org/course/inforisk
https://www.coursera.org/specializations/cloudcomputing
https://www.coursera.org/learn/python-data

需要在python中写一个正则表达式在作为if条件语句的判断条件,关键词为“/course/” “/specializations/”以及 “/learn/”三个条件,结构如下

if 一行链接 匹配/course/:

'''

elif 一行链接匹配/specializations/:

'''

else 一行链接匹配 /learn/:

'''

初学python,看了一段正则的教学也没有太理解,求大神写一段可以作为判断条件的匹配,再能推荐些正则的学习资料就更好了!thx!

仅仅检查是否含有用in就可以了吧?

def check_url(word, url):
    return word in url

for u in urls:
    if check_url('/course/', u):
        do something
    elif check_url('/specializations/', u):
        do something
    elif check_url('/learn/', u):
        do something

import re
raw = '''
https://www.coursera.org/course/inforisk
https://www.coursera.org/specializations/cloudcomputing
https://www.coursera.org/learn/python-data'''

check_func = lambda url, key: re.search('^https://www.coursera.org/%s/.+' % key, url)
for url in raw.split('\n'):
    if check_func(url, 'course'):
        print 'I m course'
    elif check_func(url, 'specializations'):
        print 'I m specializations'
    elif check_func(url, 'learn'):
        print 'I m learn'

这里用到了正则.+,其中.是指任意字符,+代表一个以上的字符,.+就是匹配一个以上的任意字符。
Python中re模块是正则相关的模块,这里用到了re.search,如果匹配字符串成功,会返回一个对象,否则返回None
re模块还有其他函数,例如re.findall,re.match,re.replace

直接用in是不可以的,例如如果url是https://www.coursera.org/course/specializations,就会导致specializations和course都能匹配到。
希望可以帮到你。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城把python文件格式改成pyw,用windows定时调度任务运行还是有黑框

( sbf胜博发娱乐城 )

  1. 文件格式是pyw

  2. 运行是通过批处理文件来做的

  3. 触发条件是windows定时调度任务


请问有什么办法能够让命令行消失?先行谢过。

定时任务里面的python解释器要用pythonw.exe

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

胜博发游戏官网Python用Py2exe打包脚本 找不到Win32api模块

( 胜博发游戏官网 )

#这里是set_up.py
from distutils.core import setup
import py2exe

py2exe_options = {"dll_excludes":['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll', 'tk84.dll', 'POWRPROF.dll']}
setup(windows=['main_2.0.py'])
#py2exe的报错log
Traceback (most recent call last):
  File "main.py", line 5, in <module>
ImportError: No module named 'win32api'

导入的模块 以及唯一调用的win32api函数:

win32api不属于标准库,需要自己安装
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/

py2exe经常会有这种问题,我上次也遇到过,而且不光是win32连内置模块都找不到,后来通过安装pyinstaller解决的。

对话框不需要用win32api也可以实现,而且好像编码也需要处理,用tkMessageBox会好一点。

tkMessageBox.showinfo(title,msg,parent)

还有其他的方法。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

胜博发游戏官网爬虫之模拟登入问题

( 胜博发游戏官网 )

在模拟登入极客学院时候,有个验证码,验证码链接后面带一个参数,琢磨不透这个参数怎么来的
类似这个验证码链接
http://passport.jikexueyuan.com/sso/verify?1459004256917
后面的一个参数1459004256917,这个是根据什么算出来的还是从哪里匹配下来的?

代码补充:

def startLogin(self):
        verify_img = r'http://passport.jikexueyuan.com/sso/verify?%s' %(time.time())
        print verify_img
        verify = raw_input('输入验证码:')
        login_data = {
            'expire':'7',
            'referer':'http://www.jikexueyuan.com/',
            'uname':self.username,
            'password':self.password,
            'verify':verify
        }
        s_login = login_session.post(self.loginurl,data=login_data,headers=headers)
        print type(s_login.json())
        for k,v in s_login.json().items():
            print k,v

最后执行的时候,得到的信息结果:

http://passport.jikexueyuan.com/sso/verify?1459164531.42
输入验证码:1857
<type 'dict'>
status 0
msg 验证码错误
jumpUrl /sso/login

老是提示验证码错误

提交url的时候,直接使用time.time()就可以了。

import time
url = 'http://passport.jikexueyuan.com/sso/verify?%s'%(time.time())

时间戳而已

从现在到1970.1.1的毫秒数

写固定就行,只不过是为了防止缓存而已。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

胜博发游戏官网Python怎么下载URL指向的文件?

( 胜博发游戏官网 )

请问大家Python怎样下载一个url请求的文件,可能我描述的不是很清楚,直接贴代码。

比如是这样的url:http://www.aaa.com/download.php?aid=123

在浏览器中打开这个url,就会直接下载一个文档,请问如何用Python下载这个url指向的文档?

写入文件就好了
f=urllib2.urlopen(url)
data=f.read()
f=open(path,’wb’)
f.write(data)
f.close()

urllib2.urlretrieve(url, filename)

这么懒,google一下不就有了→_→

上面的答案有点问题,urllib2里面没有urlretrieve函数,这个函数在urllib里面。

最简单的实现是使用wget

  1. 安装

     pip install wget
    
  2. 使用

    import wget
    wget.download(“http://xxx.xxx.com/xx.mp4”)

直接用requests这个库去下载,网上有很多例子。对于大文件也有相应的下载方式。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

胜博发游戏官网ckeditor提交的文本如何在前台正确显示(去除html标签)(python、flask)

( 胜博发游戏官网 )

用flask集成ckeditor进行文本编辑后,首页的文本显示中带有html标签,请问这个标签要如何去除?
谢谢~

<ul class="posts">
    {% for post in posts %}
        <div class="post-content">
            <div class="post-header">
            <a href="{{ url_for('.post', id=post.id) }}">
                {{ post.article_name }}
            </a>
            </div>
            <div class="post-body">
                <pre>{{ post.body }}</pre>
            </div>
            <div class="post-footer">
                {% if current_user == post.author %}
                <a href="{{ url_for('.edit_post', id=post.id) }}">
                    <span class="label label-primary">Edit</span>
                </a>
                {% endif %}
            </div>
        </div>
    </li>
    {% endfor %}
</ul>

jinja2不转义使用{{ var|safe}}

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城python 文本格式转换代码优化

( sbf胜博发娱乐城 )

格式转换代码见下边,就是代码运行起来很慢,想看看大家是否有优化方案


Number of segment pairs = 182; number of pairwise comparisons = 40
'+' means given segment; '-' means reverse complement

Overlaps            Containments  No. of Constraints Supporting Overlap

******************* SCL279Contig1 ********************
whvs7e09.R+
24990481+
******************* SCL279Contig2 ********************
et|RFL_Contig5917+
                    24993123+ is in et|RFL_Contig5917+
                    whsctal27f01.R+ is in et|RFL_Contig5917+
                    whxn27054l15.R+ is in et|RFL_Contig5917+
                    whsctal3n06.F- is in et|RFL_Contig5917+
                    whthkles18l09.R+ is in et|RFL_Contig5917+
                    whsctal3n06.R+ is in et|RFL_Contig5917+
                    32771503+ is in whsctal3n06.R+
                    32678311+ is in et|RFL_Contig5917+
whxn27054l15.F-

DETAILED DISPLAY OF CONTIGS
******************* SCL279Contig1 ********************
                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           CCGCAGGGGTCGCGGCCGAGCAGGGCGGCGCCGGCGACGAGCTCTCCGCTCTGTTCAAGG
                      ____________________________________________________________
consensus             CCGCAGGGGTCGCGGCCGAGCAGGGCGGCGCCGGCGACGAGCTCTCCGCTCTGTTCAAGG

                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           AGTTCTCGCTAGACAGCAGCAGCACCTTCGCCGAGGCGCGGATCCGGGCCACCTTCTACC
                      ____________________________________________________________
consensus             AGTTCTCGCTAGACAGCAGCAGCACCTTCGCCGAGGCGCGGATCCGGGCCACCTTCTACC

                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           CCAAGTTCGAGAACGAGGAATCCGACCAGGAGTCAAGAACCCGGATGATTGAGATGGTGT
                      ____________________________________________________________
consensus             CCAAGTTCGAGAACGAGGAATCCGACCAGGAGTCAAGAACCCGGATGATTGAGATGGTGT

                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           CACAAGGATTAGCTACCATGGAGGTTACGCTCAAGCATTCAGGGTCTTTGTTCATGTATG
24990481+                                                               TTCATGTATG
                      ____________________________________________________________
consensus             CACAAGGATTAGCTACCATGGAGGTTACGCTCAAGCATTCAGGGTCTTTGTTCATGTATG

                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           CTGGTAACCGTGGTGGTGCATATGCCAAGAACAGCTTTGGAAATATCTACACTGCTGTGG
24990481+             CTGGTAACCGTGGTGGTGCATATGCCAAGAACAGCTTTGGAAATATCTACACTGCTGTGG
                      ____________________________________________________________
consensus             CTGGTAACCGTGGTGGTGCATATGCCAAGAACAGCTTTGGAAATATCTACACTGCTGTGG

                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           GCGTTTTTGTTTTGGGTCGCTTGTTTCGTGAAGCTTGGGGGAGAGAAGCTCCTAAAATGC
24990481+             GCGTTTTTGTTTTGGGTCGCTTGTTTCGTGAAGCTTGGGGGAGAGAAGCTCCTAAAATGC
                      ____________________________________________________________
consensus             GCGTTTTTGTTTTGGGTCGCTTGTTTCGTGAAGCTTGGGGGAGAGAAGCTCCTAAAATGC

                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           AAGCGGAATTCAATGATTGTCTCGAGAAAAACCGAATAAGCATTTCAATGGAACTTGTCA
24990481+             AAGCGGAATTCAATGATTGTCTCGAGAAAAACCGAATAAGCATTTCAATGGAACTTGTCA
                      ____________________________________________________________
consensus             AAGCGGAATTCAATGATTGTCTCGAGAAAAACCGAATAAGCATTTCAATGGAACTTGTCA

                          .    :    .    :    .    :    .    :    .    :    .    :
whvs7e09.R+           CGGCTGTATTAGGAGACCATGGGCAAAGGCCTAAGGATGATTATGCTGTGATTACAGCTG
24990481+             CGGCTGTATTAGGAGACCATGGGCAAAGGCCTAAGGATGATTATGCTGTGATTACAGCTG
                      ____________________________________________________________
consensus             CGGCTGTATTAGGAGACCATGGGCAAAGGCCTAAGGATGATTATGCTGTGATTACAGCTG


Number of segment pairs = 600; number of pairwise comparisons = 172
'+' means given segment; '-' means reverse complement

Overlaps            Containments  No. of Constraints Supporting Overlap

******************* SCL292Contig1 ********************
whsctal16b21.F+
                    9428019- is in whsctal16b21.F+
                    whxq28060f16.F+ is in whsctal16b21.F+
                    whxq29060f16.F+ is in whxq28060f16.F+
whxn14056i15.F+
whxq28060f16.R-
                    9362629- is in whxq28060f16.R-
whxq29060f16.R-
******************* SCL292Contig2 ********************
et|tplb0013k02+
                    whthls7l03.R+ is in et|tplb0013k02+
                    9561217+ is in et|tplb0013k02+
                    9561363+ is in et|tplb0013k02+
                    93033944+ is in 9561363+
                    14317289+ is in et|tplb0013k02+
                    32659187+ is in et|tplb0013k02+
                    32663705+ is in et|tplb0013k02+
                    93191970+ is in et|tplb0013k02+
                    32786704+ is in et|tplb0013k02+
                    whsctal16b21.R+ is in 32786704+
                    33217630+ is in et|tplb0013k02+
                    whxn14056i15.R+ is in 33217630+
                    55676375+ is in et|tplb0013k02+
                    93032669- is in et|tplb0013k02+
                    whv16n6d15.F- is in 93032669-
                    whv16n6d15.R+ is in 93032669-

DETAILED DISPLAY OF CONTIGS
******************* SCL292Contig1 ********************
                          .    :    .    :    .    :    .    :    .    :    .    :
whsctal16b21.F+       GGCATACTATAGCATCATTGTGGTCTGGAAACATTGGAGGGCTATAATGAAAAAAAATAC
                      ____________________________________________________________
consensus             GGCATACTATAGCATCATTGTGGTCTGGAAACATTGGAGGGCTATAATGAAAAAAAATAC

                          .    :    .    :    .    :    .    :    .    :    .    :
whsctal16b21.F+       TAAATTGAGTTGAAGTCCAAGGAATTAGTGCCATACAACAACTGAAACTTTCTGGTGCTA
9428019-                                        AGTGCCATACAACAACTGAAACTTTCTGGTGCTA
whxq28060f16.F+                 TCAAGTCCAAGGAATTAGTGCCATACAACAACTGAAACTTTCTGGTGCTA
whxq29060f16.F+                 TCAAGTCCAAGGAATTAGTGCCATACAACAACTGAAACTTTCTGGTGCTA
whxn14056i15.F+                                     CCATACAACAACTGAAACTTTCTGGTGCTA
                      ____________________________________________________________
consensus             TAAATTGAGTTCAAGTCCAAGGAATTAGTGCCATACAACAACTGAAACTTTCTGGTGCTA

                          .    :    .    :    .    :    .    :    .    :    .    :
whsctal16b21.F+       CTTACACCTGGGTCAGGCTCTTGCAGAGCTGGAGCAAATTTGTAGCTCAGCGTTGCAATG
9428019-              CTTACACCTGGGTCAGGCTCTTGCAGAGCTGGAGCAAATTTGTAGCTCAGCGTTGCAATG
whxq28060f16.F+       CTTACACCTGGATCAGGCTCGTGCTGAGCTGGAGCAAATTTGTAGCTCAGCATTGCAATG
whxq29060f16.F+       CTTACACCTGGATCAGGCTCGTGCTGAGCTGGAGCAAATTTGTAGCTCAGCATTGCAATG
whxn14056i15.F+       CTTACACCTGGATCAGGCTCGTGCTGAGCTGGAGCAAATTTGTAGCTCAGCATTGCAATG
whxq28060f16.R-                  ATCAGGCTCGTGCTGAGCTGGAGCAAATTTGTAGCTCAGCATTGCAATG
whxq29060f16.R-                  ATCAGGCTCGTGCTGAGCTGGAGCAAATTTGTAGCTCAGCATTGCAATG
                      ____________________________________________________________
consensus             CTTACACCTGGATCAGGCTCGTGCTGAGCTGGAGCAAATTTGTAGCTCAGCATTGCAATG

需要的结果是:


SCL279Contig1 whvs7e09.R 24990481
SCL279Contig2 et|RFL_Contig5917 24993123 whsctal27f01.R whxn27054l15.R whsctal3n06.F  whthkles18l09.R whsctal3n06.R 32771503 32678311 whxn27054l15.F-
SCL292Contig1 whsctal16b21.F 9428019 whxq28060f16.F whxq29060f16.F whxn14056i15.F whxq28060f16.R 9362629 whxq29060f16.R 
SCL292Contig2 et|tplb0013k02 whthls7l03.R 9561217 9561363 93033944 14317289 32659187 32663705 93191970 32786704 whsctal16b21.R 33217630 whxn14056i15.R 55676375 93032669 whv16n6d15.F whv16n6d15.R

我写的代码


# encoding: utf-8

with open('1.txt', 'r') as f:
    a = []
    b = []
    for num, line in enumerate(f):
        if 'Overlaps' in line:
            a.append(num)
        if 'DETAILED' in line:
            b.append(num)
    f.seek(0, 0)
    for i, j in zip(a, b):
        lines = f.readlines()[i:j+1]  #读取指定的行数
        if '**' in ''.join(lines):
            for i in range(len(lines)): #下边就是对获取的行数进行格式转换
                new = lines[i].strip().split()
                if '*******************' in new:
                    print '\n' + new[1],
                elif len(new) == 1:
                    print new[0][:-1],
                elif 'in' in new:
                    print new[0][:-1],
        f.seek(0, 0)

结果大概有10万条,上述代码运行了6个小时还没运行完,哪位大侠有优化的好点子吗?谢谢指点

對於你的轉換細節我不了解,所以這邊我不多做考慮,純粹就你的代碼上的問題來提出一些可能增進效能的建議。

首先看的出來你採取的是二段式的處理手法。

  1. 先 parse 過整個檔案,找出包含關鍵字 'Overlaps''DETAILED' 的行數,並將行序記錄下來。

  2. 對於每一個由 'Overlaps''DETAILED' 劃分出來的區間,進行文本的轉換處理。

這種兩段式的處理手法本來就會造成效率的低落,因為大部分的轉換工作都可以一段式的完成,我們應該盡可能地邊讀邊處理。

不過兩段式的處理還不是造成跑不完的關鍵主因,主要還是你每處理一個 區間 就必須要重讀整個文件!

    for i, j in zip(a, b): # 對每個區間
        lines = f.readlines()[i:j+1]  #读取指定的行数
        # 處理該區間

你會發現從頭到尾你讀了這個文件 len(a)+1 次。對於十萬行的文件來說,這實在是太傷了。

那應該怎麼辦呢? 下面也許是一個可行的辦法:

with open('1.txt', 'r') as f:
    flag = False  # 利用 flag 來判斷是否在區間內
    for line in f:  # 此處也不需要 num 了
        if 'Overlaps' in line:
            flag = True  # 進入區間
        if flag:
            new = line.strip().split()
            if '*******************' in new:
                print '\n' + new[1],
            elif len(new) == 1:
                print new[0][:-1],
            elif 'in' in new:
                print new[0][:-1],
        if 'DETAILED' in line:
            flag = False  # 區間結束

這個代碼從頭到尾只讀了文件一次,對於區區十萬行的讀檔跟文件轉換,Python 絕對沒什麼問題,基本上也不需要任何平行的處理。

另外我在這篇中的回答可能對你也有幫助,你可以參考看看,加油。

建议你将这10万条记录拆分为1万条1个文件,然后用线程跑,一般按照你PC的核数来设置,会节省很多时间。

用正则表达式。

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

胜博发游戏官网让两个及更多Tkinter窗口同时运行而互不影响?

( 胜博发游戏官网 )

首先我用python做了两个独立的tkinter程序,程序A和程序B独立运行是正常的。然后把程序B作为模块导入程序A,通过了。然后我通过程序A里面的函数A向程序B里面的函数B传了一个变量,并且在穿过去之后,再程序B中的接受语句下面增加一条调试语句print(),结果成功输出了。然后问题来了,程序B的框架出不来,也不能继续往下执行了。


程序A截取一段:

def files(self):
    self.cwd.set('Check is not a dir!')
    self.path_from = tdir
    print (tdir)
    #print(self.path_from)
    ext = self.path_from[-4:]
    if ext == '.zip':
        self.cwd.set('Checked is a zipfile!')
        self.run()
    elif ext in ['.jpg','.png', '.bmp']:
        ABSPATH = os.path.abspath(self.path_from)
        pathfrom = os.path.split(ABSPATH)[0]
        thread.start_new_thread( image.runiv, (pathfrom,) )
    elif ext in ['.wma','.mp3','.wav']:
        ABSPATH = os.path.abspath(self.path_from)
        self.top.withdraw()
        thread.start_new_thread( mp3.runmp3, (ABSPATH,) )
        #self.top.Destroy()

程序B截取一段:

def runmp3(pathfrom):

global path_from
path_from = pathfrom
print(path_from)
#d.withdraw()
root = Tkinter.Tk()
root.title("DL music player")
root.iconbitmap("warning")
media = media_dl()
media._init_(root)
mainloop()

我的问题如题,轻拍谢谢。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

sbf胜博发娱乐城flask-sqlachemy使用mysql,出现错误Internal Error

( sbf胜博发娱乐城 )

最近在学习Flask Web开发这本书
用flask-sqlachemy连接到mysql的时候,参考书中提供的URI,把sqlite的改成了mysql的
这是config文件

import os

class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:7123@localhost/database'
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True

    @staticmethod
    def init_app(app):
        pass

config = Config()请输入代码

这是__init__文件

from flask import Flask
from flask.ext.bootstrap import Bootstrap
from flask.ext.moment import Moment
from flask.ext.sqlalchemy import SQLAlchemy
from config import config
from flask.ext.login import LoginManager
from flask.ext.pagedown import PageDown
import pymysql

pymysql.install_as_MySQLdb()
bootstrap = Bootstrap()
moment = Moment()
db = SQLAlchemy()
pagedown = PageDown()

login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.login_view = 'auth.login'


def create_app(config):
    app = Flask(__name__)
    app.config.from_object(config)
    config.init_app(app)

    bootstrap.init_app(app)
    moment.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)
    pagedown.init_app(app)

    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    from .auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint, url_prefix='/auth')

    return app

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

这是启动文件manage

#!/usr/bin/env python
import os
from app import create_app, db
from app.models import User, Role
from flask.ext.script import Manager, Shell
from flask.ext.migrate import Migrate, MigrateCommand
from config import config
from flask.ext.sqlalchemy import SQLAlchemy


app = create_app(config)
manager = Manager(app)
migrate = Migrate(app, db)


def make_shell_context():
    return dict(app=app, db=db, User=User, Role=Role)
manager.add_command("shell", Shell(make_context=make_shell_context))
manager.add_command('db', MigrateCommand)


@manager.command
def test():
    """Run the unit tests."""
    import unittest
    tests = unittest.TestLoader().discover('tests')
    unittest.TextTestRunner(verbosity=2).run(tests)


if __name__ == '__main__':
    manager.run()

在使用python manage.py shell后,使用db.create_all()
抛出错误

raise InternalError(errno, errorvalue)
sqlalchemy.exc.InternalError: (InternalError) (1049, "Unknown database 'database'") None None

找了半天,开始的时候就是直接改的config里的SQLALCHEMY_DATABASE_URI,会出现ImportError: No module named ‘MySQLdb’,我想是因为没有跟MySQL接起来,按照https://www.zhihu.com/question/29719547这个帖子里面讲的,用了个pymysql来做,结果就是上面那个样子,求教求教
查了挺多资料,似乎还有另外一条路子,就是放弃ORM,用sql语句查询,用engine建立数据库连接?
谢谢~

我之前也遇到了同样的问题,现在分享一下。
首先,sqlalchemy链接MySQL需要MySQLdb进行连接,这个库一般用pip或者easy_install是装不上的,需要很多依赖。

linux:

sudo apt-get install python-mysqldb(ubuntu)
yum install MySQL-python (Linux Fedora, CentOS …)

windows:

需安装 MySQL-python
链接在这https://pypi.python.org/pypi/MySQL-python/1.2.5

安装好以后打开python,import MySQL看看会不会报错,如果不会,那就装好了。

问题搞定了,首先是想用MySQL,必须要用到PyMySQL或者是@island所讲的,MySQLdb,MySQLdb对python的支持有点问题,楼上答案的链接支持到py2.7,我记得看过一个资料讲,这个支持是到py3.4,py3.5就不行了,这个我没有尝试过,遇到困难的小伙伴可以回头试试PyMySQL,记得import pymysql和pymysql.install_as_MySQLdb()两句,URI也要相应的变化
然后,如@NSDont所讲,create_all()只是能建表而已,还需要自己用MySQL撸一个数据库(数据库的名字也不能傻傻的叫DATABASE)。
最后那个URI里面,如果是本地数据库,server通常是localhost:3306,注意一下这个地方
头一次提问,谢谢楼上二位~

额,这个错误貌似是没有数据库。

(看完/读完)这篇文章有何感想! sbf胜博发娱乐城的分享…

SBF胜博发娱乐老虎机selenium怎么样获得百度贴吧动态加载的组件?

( SBF胜博发娱乐老虎机 )

我想点击下面图片的回复,点击回复展开后输入(百度贴吧)

我不知道如何获得这个“回复”,加载页面完成后的page_source没有这部分的源码,所以我改怎么办呢??大牛求告知

或者可以直接post???

你都知道是 ajax 的了,怎么能用 page source呢。你可以用 chrome 浏览器的 「检查」功能。


检查后可以看到目前你在浏览器中看到的内容!!!

————————补充一点————————-
看你这个需求,你应该是想写个程序给贴吧里刷回复,我觉得你可以不用使用 selenium。

这个是我提交的时候在 chrome 里抓包抓到的内容,也就是你在post 里提交的内容。
这里的每一项你都可以在当前页面的「检查」里获取到。
然后你就可以用 python 模拟浏览器提交啊。

import requests

data = {'kw':'行尸走肉','fid':'815816'}  # 自行补充,
url = 'http://tieba.baidu.com/f/commit/post/add' # 在 headers 里有
cookies =  'your_cookies' #把抓包的Headers 里的 cookie 复制整理到这里

#为了防止百度禁止机器人,把 请求里的header 里的 user_agent 改一下。
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.8 Safari/537.36'}
result = requests.post(url,data = data,cookies = cookies,headers = headers)
print(result.status_code) # 返回状态 

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网Flask分页后,form表单无法传值,要怎么解决?

( 胜博发游戏官网 )

1、定义了一个搜索表单 form.py:

class SearchForm(Form):
    search_keyword = StringField('', validators = [DataRequired()])
    submit = SubmitField('Start Search')

2、定义路由函数 views.py:

出问题的地方: 可以通过 value = request.form.get(‘search_keyword’)取到表单提交的值; 在分页后,点击“下一页”,这个表单就被清空了,没有search_keyword这个值了,怎么都取不到,导致分页的其它页就无法根据search_keyword显示内容了。这个要怎么解决呢?

@app.route('/search', methods=['POST', 'GET'])
def search():
    form = SearchForm():
    keyword = form.search_keyword.data

    page = request.args.get('page', 1, type=int)
    value = request.args.get('keyword')

    if form.validate_on_submit():
        pagination = Post.query.filter(Post.content.like(keyword))paginate(
            page, per_page=current_app.config['default'], error_out=False)

posts = pagination.items
return render_template('search.html', posts=posts, pagination=pagination, form=form, value=value)

3、页面 search.html

<div class="list">
    {% include 'list.html' %}
</div>
{% if pagination %}
    <div class="pagination">
    {{ macros.pagination_widget(pagination, '.search', value=value)}}
    </div>
{% endif %}

是否考虑不使用post,而是使用

/aaaaa?search=keyword
value = request.args.get('search')

同样的回答,使用两个视图

def search():
    form = DoSearchForm()
    if form.validate_on_submit():
        search = form.search.data
        return redirect(url_for('search_content', search=search))
    return render_template('搜索页')


def search_content():
    page = request.args.get('page')
    search = request.args.get('search')
    if not search:
        return redirect(url_for('search'))
    else:
        posts = Post.query.filter(Post.content.like(search)).paginate(
            page,
            per_page=current_app.config['default'],
            error_out=False)
    return render_template('显示内容页', posts=posts)

或者使用一个函数也行

# 大概就是这么个情况
def search():
form = DoSearchForm()
page = request.args.get('page', type=int)
search = request.args.get('search')
if form.validate_on_submit() and request.method == 'POST':
    search = form.search.data
    return redirect(url_for('forums.search', search=search, page=1))
else:
    topics = Topic.query.filter(Topic.content.like(search)).paginate(
        page,
        per_page=current_app.config['PER_PAGE'],
        error_out=False)
    return render_template('forums/search.html', topics=topics,form = form)

可以考虑把search keyword放在g里?

post验证之后跳转路由,显式作为路由参数,看看各网站搜索url就明白了。
这样之后post验证就防君子不防小人。

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…

SBF胜博发娱乐老虎机python发送cookie问题

( SBF胜博发娱乐老虎机 )

先登录然后查看cookie的时候有个这样的ASP.NET_SessionId=bmkuwavsmwfru3bv04s5cr45
用requests通过
cookie={‘ASP.NET_SessionId’:’bmkuwavsmwfru3bv04s5cr45′}
get(url,cookies=cookie)
这样发送请求的时候并不能正常打开想要的页面。是因为这个ASP.NET_SessionId是session的原因吗?

要看你用的什么方式发送的cookie了,用的requests库的话,自带的Session可以记录session

(看完/读完)这篇文章有何感想! SBF胜博发娱乐老虎机的分享…

胜博发游戏官网Python多线程使用同一个MySQL连接,如何在所有线程工作完成后关闭游标、连接?

( 胜博发游戏官网 )

def getAllItems(startNum, endNum, tcount = 10):
    for torder in range(tcount):
        t = MyThread(torder, tcount, startNum, endNum)
        t.start()
    dbUtils.closeCur()
    dbUtils.closeConn()
    print "INFO: cursor and connection closed, work done!"

如上代码,MyThread定义了工作内容,其中会调用一个全局的数据库连接对象(dbUtils的成员变量),我想让最后三行可以在所有线程工作完成后做收尾工作,但目前的写法是错误的,一旦开启进程,最后三行就运行了,把数据库连接关闭了,然后前面的所有线程就死锁了。

求问怎么达成我需要的目标呢?谢谢。

用join来等待线程结束:

def getAllItems(startNum, endNum, tcount = 10):
    threads = []
    for torder in range(tcount):
        t = MyThread(torder, tcount, startNum, endNum)
        t.start()
        threads.append(t)
    for t in threads:
        t.join()
    dbUtils.closeCur()
    dbUtils.closeConn()
    print "INFO: cursor and connection closed, work done!"

import threading
import time

def worker():
    time.sleep(1)
    print('done!')

if __name__ == '__main__':
    threads = [threading.Thread(target=worker) for _ in range(5)]
    for t in threads:
        t.start()
    for t in threads:
        t.join()
    print('all done!')

调用Thread.join()就可以了

(看完/读完)这篇文章有何感想! 胜博发游戏官网的分享…