美文网首页
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