美文网首页
python小技能

python小技能

作者: 上山走18398 | 来源:发表于2019-07-09 07:08 被阅读0次

    .py文件生成.exe

    1. 把Python脚本生成windows可执行文件
    
    pip install pyinstaller
    
    pyinstaller -F "此处放你的脚本"
    
    cx_freeze: http://www.cnblogs.com/renzo/archive/2012/01/01/2309260.html 
    
    
    2.安装virtualEnv 后,如何激活环境
    virtualenv (--no-site-packages ) envname ##创建一个新的隔离环境 ,并且不会把原来的包拷过来
    
    cd envname 
    Scripts\activate  ##激活并切换到virtualenv环境 
    
    
    3. 当前文件的名字不能和导入的包名字相同(当前文件夹也可默认为一个包)
    比如:创建一个selenium的文件夹
    然后再导入selenium库,默认搜索的是selenium文件夹
    sys.path.append("path")
    
    
    
    4. 日志输出  
        os.system("F:\\autotest\\test_case\\%s 1>>log.txt 2>&1" %a)
        2>&1是什么意思?2>&1应该分成两个部分来看,
        一个是2>以及另一个是&1,其中2>就是将标准出错重定向到某个特定的地方;
        &1是指无论标准输出在哪里。所以2>&1的意思就是说无论标准出错在哪里(哪怕是没有?),
        都将标准出错重定向到标准输出中。
    
        ‘>’ 会覆盖
        ‘>>’ 不覆盖产生在一个文件内
        
        Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中
        
        >& log 表示把标准输出和错误输出都定向到文件log中,相当于 >log 2>&1
        
        
    5. raw_input 乱码 
        
        raw_input(unicode('请输入文字','utf-8').encode('gbk'))  
    
    6. "python魔法方法:__getattr__,__setattr__,__getattribute__"
    
        6.1 __getattr__:访问对象的item属性的时候,如果对象并没有这个相应的属性,方法,那么将会调用这个方法来处理
        这实际上可以把一个类的所有属性和方法调用全部动态化处理了
        
        如果要写SDK,给每个URL对应的API都写一个方法,那得累死,而且,API一旦改动,SDK也要改。
    
    利用完全动态的__getattr__,我们可以写出一个链式调用:
        
    6.2 __setattr__(self, item, value):当试图对象的item特性赋值的时候将会被调用
        
        
    6.x:__iter__():迭代器,生成迭代对象时调用,返回值必须是对象自己,然后for可以循环调用next方法
        
    7. __str__()
        只需要定义好__str__()方法,返回一个好看的字符串就可以了
        
        def __str__(self):
          return 'Student object (name: %s)' % self.name
    
        print Student('Michael')
        Student object (name: Michael)  
        
    8. __repr__()
        两者的区别是__str__()返回用户看到的字符串,而__repr__()返回程序开发者看到的字符串,也就是说,__repr__()是为调试服务的。
        __repr__ = __str__
        
        重构__repr__方法后,不管直接输出对象还是通过print打印的信息都按我们__repr__方法中定义的格式进行显示了
        
        # 你会发现,直接输出对象ts时并没有按我们__str__方法中定义的格式进行输出,而用print输出的信息却改变了
        
    9. __iter__
        返回一个可迭代对象,拥有next()方法
        
    10. __getitem__()
        要表现得像list那样按照下标取出元素,需要实现__getitem__()方法:
        
    11. __call__()
        只需要定义一个__call__()方法,就可以直接对实例进行调用
         def __call__(self):
            print('My name is %s.' % self.name)
        >>> s = Student('Michael')
        >>> s()
        My name is Michael.
        
    12 
        __new__: 对象的创建,是一个静态方法,第一个参数是cls。(想想也是,不可能是self,对象还没创建,哪来的self)
        __init__ : 对象的初始化, 是一个实例方法,第一个参数是self。
        __call__ : 对象可call,注意不是类,是对象。
        
    13. __contains__()
        __contains__():当使用in,not in 对象的时候 调用(not in 是在in完成后再取反,实际上还是in操作)
        
    14. for 循环的性能优化
    
        
        
        s=''  
        L=[some_function(i) for i in list]  
        s=''.join(L)  
        
        options = [1,2,3,4,5,6]
        print [opt for opt in options]
        
        option ={"key1":'222',"key2":"33333"}
        print [(name, opt) for name, opt in option.items()]
        
        dict((name, opt) for name, opt in option.items())
        
        a if a>b else b 
        
         if a>b:
    
            c = a
        
        else:
        
            c = b
            
        [对(x)的操作 for x in 集合 if 条件]
    
        [对(x,y)的操作
         for x in 集合1 
        for y in 集合2 if 条件]    
        
        
        
    15. sys._getframe(0) 为获取当前栈信息
    
    ###
    
    16.  python库下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/  把.whl 改成.zip 解压即可
    
    ###
    17 pyenv python 版本管理
    
    
    ####
    18 解决pycharm问题:module 'pip' has no attribute 'main' https://segmentfault.com/q/1010000014743128 /Applications/PyCharm.app/Contents/helpers

    相关文章

      网友评论

          本文标题:python小技能

          本文链接:https://www.haomeiwen.com/subject/inqtkctx.html