git_rename

Why

项目多了,难免会有重命名的时候,重命名本身没什么问题,可是加上gitignore中的*.pyc*~可能会出现些问题…

Q

重命名的时候一般不会有问题,可是在分支切换的同时,由于存在ignore的文件,分支的切换并不会那么正确。 往往会多出重命名前或重命名后的文件夹,多的原因就是文件夹下有被忽略的临时文件。

原因很简单,所以解决也不难,删除多余的文件夹,一切正常了。

总结

git在重命名文件夹后切换分支可能由于ignore临时文件的存在多出重命名前后的文件夹。

slice

“不会slice,绝不能说会python”,slice的重要性不言而喻。

Basis

  • index start with 0
  • support negtive index
  • [included:excluded:step] eg: [:], [::-1]
  • work with list, tuple and string

step

Ipython 中的示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
In [1]: e = range(6)
In [2]: e
Out[2]: [0, 1, 2, 3, 4, 5]
In [3]: e[:]
Out[3]: [0, 1, 2, 3, 4, 5]
In [4]: e[6]
IndexError
In [5]: e[5]
Out[5]: 5
In [6]: e[:5]
Out[6]: [0, 1, 2, 3, 4]
In [7]: e[:6]
Out[7]: [0, 1, 2, 3, 4, 5]
In [8]: e[::-1]
Out[8]: [5, 4, 3, 2, 1, 0]
In [9]: e[6:0]
Out[9]: []
In [10]: e[6:0:-1]
Out[10]: [5, 4, 3, 2, 1]
In [11]: 0 in e[6:0:-1]
Out[11]: False
In [12]: e[5:0:-1]
Out[12]: [5, 4, 3, 2, 1]
In [13]: e[5:0:-1] == e[6:0:-1]
Out[13]: True
In [14]: e[-1:-7:-1]
Out[14]: [5, 4, 3, 2, 1, 0]
In [15]: e[-1:-7:-1] == e[::-1]
Out[15]: True
In [16]: e[-1:-9:-1]
Out[16]: [5, 4, 3, 2, 1, 0]
In [17]: e[::-2] == e[-1:-7:-2]
Out[17]: True
In [18]: e[::-2] == e[-1:-8:-2]
Out[18]: 'Just do IT'
  • e[::-1] == e[-1:-7:-1]
  • slice切片中索引可以超出实际范围
  • 带有步长的切片,索引顺序和步长方向一致
  • 切片总是新产生一个对象,而不是改变原有对象

总结

Just do IT

mailcap

Tencent === Trash,微云下载的文件总是用gedit打开,firefox如是说。有谁能想到,腾讯微云下载的文件有着一样错误的Content-Type: "application/octet-stream"

The Way to fix it

Ubuntu 下,命令行执行:

1
echo 'application/octet-stream; nautilus --no-default-window --no-desktop %s; test=test -n "$DISPLAY"' >> ~/.mailcap

其实就是向家目录下.mailcap文件追加上述命令单引号内中的内容。(文件不存在则新建)

reason

微云下载文件时,HTTP Response headers,中使用了不是Trash不可能使用的Content-Type: "application/octet-stream",这是什么鬼文件,系统说他不认识,你试试gedit吧。

上面的解决方法是,application/octet-stream类型的文件用nautilus打开(在文件夹中显示),之所以没有定义到确定的应用,因为我常用的有zip和pdf两种,只好折中使用nautilus了。

总结

firefox中下载的文件总是用gedit打开,我气愤不止一次了。我用Linux,为什么用QQ,因为有人用QQ,为什么是微云,因为有用QQ发的文件,我只好借用微云,然后浏览器下载下来。

感谢IRC: Cork

tuple change?

在python中元组tuple是不能改变的,列表和字典是可以改变的。

change

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
In [1]: l = [1, 2]
In [2]: d = {'a':'aaa', 'b':'bbb'}
In [4]: t = (l, d)
In [5]: t
Out[5]: ([1, 2], {'a': 'aaa', 'b': 'bbb'})
In [7]: l.pop()
Out[7]: 2
In [8]: t
Out[8]: ([1], {'a': 'aaa', 'b': 'bbb'})
In [9]: l.append(3)
In [10]: t
Out[10]: ([1, 3], {'a': 'aaa', 'b': 'bbb'})

总结

上述,元组的项目是列表,改变了列表。元组有没有改变,自己掂量吧...