Python常用库

雨燕双飞 提交于 2019-12-04 16:34:43
Python常用库
python库更新问题
  • 库过旧可能导致的问题:即当使用多个库时,他们之前一般有最低版本要求。如果其中一个版本过低,会导致无法协作开发。
  • 解决方案:(需要注意的是,一旦涉及到文件读写,那么都需要 sudo 权限)

excel处理相关内容:
  • excel格式问题:主要分为 xls 和 xlsx
    • xls可以被所有的excel程序打开,而xlsx则只能被office 07以上的excel程序打开。
    • 07版以后的扩展名都是.xlsx ,是用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x(即.docx取代.doc、.xlsx取代.xls,等等),使其占用空间更小。
  • Excel Python 主要有三个库:(前两者不能混用)
  • 读入的表的行数序号是从0开始算起的,而不是按照文件打开显示的列号。
  • 因此,建议使用 xlrd来读取文件内容,使用 xlsxWriter 来创建文件内容。
  • xlsxWriter的使用方式:https://www.linuxyw.com/464.html


JSON数据读取问题
  • 因为字典key不存在会引发crash问题,数组越界也会引发crash问题,因此建议使用try-catch 捕获异常,来直接获取数据,避免复杂的取值判断操作。
  • 目前建议使用JSON 库作为官方解析工具。

文件操作
  • API集合:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html
  • os.removedirs( “xxxx/xxx” ):删除一个空的叶子目录,并向上回溯,如果上级目录也是空的,那么也将其删除,依次类推,直到权限不够或者目录非空为止。
  • os.makedirs( “xxx/xxx” ):一次性创建多级目录
  • 软链接和硬链接:
    • 软链接实际上是一个文件跳转路径,它本质就是一个文本文件,记录了实际指向文件的地址。但它不影响实际文件的引用计数。
    • 硬链接相比于软链接更为高级,它将增加指向文件的引用计数。只有所有硬链接和源文件都被删除的情况下,那份文件数据才会从硬盘上被删除,否则是不会的。
    • 软链接:os.symlink( src , dst )
    • 硬链接:os.link( src , dst ),只在unix和windows下有效,对于mac来说,其执行的是简单的copy操作,无法达到指向同一份硬盘数据块的目的。
    • 在填写链接地址时,一定要注意,你写入的src地址,是相对于你dst文件所在的位置的src地址。例如:

      我们可以看到,  -> 指定的地址系统是直接写入了我们传入的src地址,因此,我们src的值一定要是相对于dst所在的位置,src的相对路径
  • 在Mac的文件操作中,不要出现类似于它不允许出现的字符,这些字符也许通过代码可以生成相应的文件夹,但是在搜索和链接时,都会出现问题。(最近碰到软链接时出错的问题。)
  • Mac在 file.open( “xxx” ) 时,如果xxx是一个软链接文件,那么也是可以正常打开的。最后会打开这个软链接指向的实际文件,并操作相关内容。

多线程与多进程
  • 多线程使用 threading 库,但是python的多线程是伪多线程,因为其在语言解释器层级还有一个GIL,这个锁会导致语言解释器会串行的解释脚本。
  • 多进程使 大专栏  Python常用库用 mutilprocess 库,这个库提供了两种并行方式:
    • 进程对象管理方式: process
    • 进程池方式:pool。因为mac电脑可以超线程运行,因此,一旦开启就会导致出错,要手动设置 Pool的大小比较好。
    • 在使用这个库时,可以使用 Manager 来管理共享数据,manager 生成的数据,是共享内存的。对于,全局变量,都是复制捕获类型。


邮件处理代码
  • 当使用网易邮箱时,我们需要在邮箱设置中打开 stmp设置,打开授权码。在发送邮件时,邮箱密码需要写为授权码,而不是真实的邮箱密码。
  • 使用网易邮箱,当你一个邮件发送给多个收件人时,会被返回错误,错误信息(554,”DT:SPM “),表示被网易判定为垃圾邮件拒绝发送。因为比较稳妥的办法是,一次一个收件人。
  • 示例代码如下:
# 邮件相关头文件
import smtplib
from email.mime.text import MIMEText

# 邮箱全局变量配置区域
global_mail_host = "smtp.163.com"            # 使用的邮箱的smtp服务器地址,这里是163的smtp地址
global_mail_user = "673302055"                           # 用户名
global_mail_pass = "280153CJFok"                             # 密码,网易规定必须使用授权码
global_mail_postfix = "163.com"                     # 邮箱的后缀,网易就是163.com
global_mail_user_name = "程剑锋"

def send_mail(to_list, sub, content):
    global global_mail_host
    global global_mail_user
    global global_mail_pass
    global global_mail_postfix
    global global_mail_user_name

    # 常规项配置内容
    mail_host = global_mail_host
    mail_user = global_mail_user
    mail_pass = global_mail_pass
    mail_postfix = global_mail_postfix
    mail_user_name = global_mail_user_name

    # 邮件发送代码
    # if isinstance(content,unicode):
    #     content = str(content)

    me = mail_user_name + "<" + mail_user + "@" + mail_postfix + ">"
    msg = MIMEText(content, _subtype = 'plain',_charset = 'utf-8')
    if not isinstance(sub,unicode):
        sub = unicode(sub)
    msg['Subject'] = sub
    msg['From'] = me
    msg['To'] = ";".join(to_list)                # 将收件人列表以‘;’分隔
    msg["Accept-Language"]="zh-CN"
    msg["Accept-Charset"]="ISO-8859-1,utf-8"
    try:
        server = smtplib.SMTP()
        server.connect(mail_host)                            # 连接服务器
        server.login(mail_user, mail_pass)               # 登录操作
        server.sendmail(me, to_list, msg.as_string())
        server.close()
        return True
    except Exception, e:
        print "邮件发送失败:%s" % (str(e))
        return False


时间处理库

科学计算库


HTTP/HTTPS网络库相关

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!