python库更新问题:
- 库过旧可能导致的问题:即当使用多个库时,他们之前一般有最低版本要求。如果其中一个版本过低,会导致无法协作开发。
- 解决方案:(需要注意的是,一旦涉及到文件读写,那么都需要 sudo 权限)
- 安装pip :sudo easy_install pip
- 使用pip更新 python库:http://www.cnblogs.com/luckjun/p/4958338.html 。
excel处理相关内容:
- excel格式问题:主要分为 xls 和 xlsx
- xls可以被所有的excel程序打开,而xlsx则只能被office 07以上的excel程序打开。
- 07版以后的扩展名都是.xlsx ,是用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x(即.docx取代.doc、.xlsx取代.xls,等等),使其占用空间更小。
- Excel Python 主要有三个库:(前两者不能混用)
- xlwt是 xls 格式的写入库
- xlsxWriter 是 xlsx的写入库
- xlrd是excel读入库,可以兼容 xls 和 xlsx(对后者的支持力度有限)。
- 具体比较可以参考:http://www.gocalf.com/blog/python-read-write-excel.html
- 读入的表的行数序号是从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是一个软链接文件,那么也是可以正常打开的。最后会打开这个软链接指向的实际文件,并操作相关内容。
多线程与多进程:
邮件处理代码:
- 当使用网易邮箱时,我们需要在邮箱设置中打开 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
时间处理库:
- date和time的结合库:datetime,http://www.cnblogs.com/shijingjing07/p/5753175.html
科学计算库:
- 可支持多维度计算,参考文章:http://www.tuicool.com/articles/RBzyUv
HTTP/HTTPS网络库相关:
- 推荐使用requests,语法简单,自动处理重定向。但目前不支持http2.0。
- 直接使用系统提供的 urllib 也不错。
- httplib2由Google开发,但是不支持自动重定向,且语法不如requests易用。