Python Tips | 沐雨浥尘

Python Tips

【个人GitBook搬运】python使用的小Tips

读写操作

  • 使用codecs模块

    1
    2
    3
    4
    import codecs
    fp1 = codecs.open(filename,'w')
    fp2 = codecs.open(filename, 'r', 'utf-8')
    lines = fp2.readlins()
  • 文件关闭

    1
    2
    3
    4
    5
    6
    try:
    f = open('/path/to/file', 'r')
    print f.read()
    finally:
    if f:
    f.close()

更简洁的表达:

1
2
with open('/path/to/file', 'r') as f:
print f.read()

  • read()&readline()&readlines()
  • read()一次性读取文件的全部内容,read(size)每次最多读取size个字节的内容
  • readline()可以每次读取一行内容
  • readlines()一次读取所有内容并按行返回list

总结

1
2
3
import codecs
with codecs.open('/Users/michael/gbk.txt', 'r', 'gbk') as f:
f.read()

文件操作

shutil.copytree(windowsDir, photoDir)

工作目录

1
2
3
import os
curDir = os.getcwd() #获取当前工作目录
chDir = os.chdir(path) # 更改工作目录

defaultdict & dict = {}

dict = defaultdict(default_factory)就是一个字典,只不过python自动为其键值赋上初值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
... d[k].append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> for k in s:
... d[k] += 1
...
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]

list

1
2
[word for word in wordlist if word != '*']  # 生成列表
for i,e in enumerate(list): # 取出列表元素以及所在位置

下划线的使用

详解Python中的下划线
Python单下划线/双下划线使用总结

1
2
3
4
object # public
__object__ # special, python system use, user should not define like it
__object # private (name mangling during runtime)
_object # obey python coding convention, consider it as private

  • 单下划线开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量
  • 双下划线开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
  • 以单下划线开头_foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *而导入
  • 以双下划线开头的__foo代表类的私有成员
  • 以双下划线开头和结尾的__foo__代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。

内存释放

先del,再显式调用gc.collect()

1
2
3
import gc
del list
gc.collect()

conda基础使用

  • conda create --name env_name python=3.6
  • activate env_name or source activate env_name
  • deactivate env_name or source deactivate env_name
  • conda remove --nme env_name --all
  • conda info -e
  • conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ and conda config --set show_channel_urls yes

使用镜像提升pip下载速度

pass

Buy me a cup of coffee