打印目录结构

2011年8月22日 13:45

# coding: utf-8
import os,sys,codecs

lc=sys.getfilesystemencoding()
sys.stdout=codecs.lookup(lc)[-1](sys.stdout)

def walkdir(d,prefix=u''):
    l=os.listdir(d)
    last=len(l)-1
    prefix+=u'   │'
    for i,f in enumerate(l):
        if i!=last:
            print  prefix+u'─',
        else:
            print  prefix[:-1]+u'└─',
            prefix=prefix[:-1]+u'  '
        print f.decode(lc)
        
        p=os.path.join(d,f)
        if os.path.isdir(p):
            walkdir(p,prefix)

 
if __name__ == '__main__':
    d=os.path.abspath('.')
    print os.path.basename(d).decode(lc)
    walkdir(d)

output:

ComicShelf
   │─ dirtree.py
   │─ zipMyComic.py
   │─ 死神
   │   │─ 死神_第460话
   │   │   │─ 001.jpg
   │   │   │─ 002.jpg
   │   │   │─ 003.jpg
   │   │   └─ 018.jpg
   │   └─ 死神_第460话.zip
   │─ 海贼王
   │   │─ 海贼王[635]悍破云霄
   │   │   │─ 001.jpg
   │   │   │─ 002.jpg
   │   │   │─ 003.jpg
   │   │   └─ 017.jpg
   │   └─ 海贼王[635]悍破云霄.zip
   └─ 火影忍者
        │─ 火影忍者[551]阻止长门
        │   │─ 001.jpg
        │   │─ 002.jpg
        │   │─ 003.jpg
        │   └─ 015.jpg
        └─ 火影忍者[551]阻止长门.zip

评论(0) 阅读(1221)

字典序生成r组合

2011年8月13日 17:05

# coding: utf-8

 ## n
#
 ## m

m=9
n=3
a=[i for i in range(n)]
ma=[m-n+i for i in range(n)] # 最大的一组

count=0

while 1:
    count+=1
    print a
    found=False
    for i in range(n)[::-1] : # 从后往前找可增的
        if a[i]<ma[i]:
            a[i]+=1
            for j in range(i+1,n): # 其后的按字典序初始化
                a[j]=a[j-1]+1
            found=True
            break
    if not found: break

print 'count:',count

评论(0) 阅读(1403)

用FF的cookie获得豆瓣FM加心歌曲列表

2011年8月04日 17:00

update at 2012.2.29: 传送门 to isnowfy大牛的方法

这篇文章启发将firefox的cookie转换为python可用的cookie_jar对象,然后就可以伪装为已登录了,不用再搞什么模拟post了!cookie万岁!

把以前的代码改了改果断又可用了,需要安装BeautifulSouppysqlite两个python包,需要输入共有多少页:

 

评论(0) 阅读(2256)

anSudoku 1.0

2011年7月30日 14:24

数独是个打发时间的好东西。在itouch上玩了很久的 Sudoku 401,实在是对这个应用上瘾了,再玩别的数独总觉得别扭,于是想在android平台上移植(好吧,其实就是"山寨")一个。从月初断断续续写到现在,算是告一段落了。

主要功能如下:

  1. 1.生成有至少58个指定数量空位的有唯一解的数独。(为什么上限是58见后文)
  2. 2.点击某一个给定数字,显示所有可以填该数字的位置,我称为"阴影模式",这也是 Sudoku 401 上我最上瘾的功能,不过应该会有很多人觉得是作弊吧。
  3. 3.浮动面板,笔记面板和填数面板的切换。
  4. 4.自动笔记模式,这个模式也很爽。
  5. 5.自动保存和恢复。
  6. 6.hint按钮。
  7. 7.计时。
  8. 8.不好意思,没了。本来还想做 Sudoku 401 的那种教学模式,那个太赞了,不过没什么时间,还是算了。

 

上几张不是特别ugly图:

有兴趣可以试试,apk传到这儿,需2.2及以上系统。也可以自己编译或修改,源码在github上,请遵循WTFPL协议。生成数独的部分用的是Dancing Links,目前我的能力是在defy上几秒内生成58个空的数独,生成59个空的就需要十几秒了,生成60个空的就得个把个分钟了。如果有办法优化到60凑个整的话,不妨告知我。

最后,遇到bug的话请先确认是不是feature,鉴于bug可能较多,so enjoy them !

评论(2) 阅读(1953)

改变/home的挂载

2011年7月22日 09:46

问题:由于在virtualbox里装archlinux时非常懒的选择了自动分区,导致/home只有300多MB,这日子可没法过了,于是想改变分区大小或者把/home挂载回/,显然后者简单安全些

步骤:

进入单用户模式:
init 1
查看/home挂载的分区:
df -h
保存/home的数据:
cp -r -p /home /root/
umount掉/home:
umount /dev/sda4
现在的/home就是在/所在的分区下了,拷回来:
cp -r -p /root/home/* /home
编辑开机自动挂载的文件,去掉原来/home的挂载的那一行:
vim /etc/fstab
退出单用户模式:
exit

评论(0) 阅读(1932)