? Editing: Post:21.body Save Delete Cancel
Content changed Sign & Publish new content

Transmitter

Transmitter

主页提醒已跟踪

按时间索引
按标签索引

Latest comments:

HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)

on May 14, 2016 最后修改: on May 14, 2016
标签:ssssssdf

宋体 SimSun
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
新宋体 NSimSun
新细明体 PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋 FangSong
楷体 KaiTi
仿宋_GB2312 FangSong_GB2312
楷体_GB2312 KaiTi_GB2312

宋体:SimSuncss中中文字体(font-family)的英文名称
Mac OS的一些:
华文细黑:STHeiti Light [STXihei]
华文黑体:STHeiti
华文楷体:STKaiti
华文宋体:STSong
华文仿宋:STFangsong
儷黑 Pro:LiHei Pro Medium
儷宋 Pro:LiSong Pro Light
標楷體:BiauKai
蘋果儷中黑:Apple LiGothic Medium
蘋果儷細宋:Apple LiSung Light
Windows的一些:
新細明體:PMingLiU
細明體:MingLiU
標楷體:DFKai-SB
黑体:SimHei
新宋体:NSimSun
仿宋:FangSong
楷体:KaiTi
仿宋_GB2312:FangSong_GB2312
楷体_GB2312:KaiTi_GB2312
微軟正黑體:Microsoft JhengHei
微软雅黑体:Microsoft YaHei
装Office会生出来的一些:
隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei
Windows 中的中文字体。
在默认情况下,也就是未自行安装新字体或者 Office 等文字处理软件的情况下,Windows 默认提供下列字体:
Windows 95/98/98SE 宋体、黑体、楷体_GB2312、仿宋_GB2312
Windows XP/2000/2003/ME/NT 宋体/新宋体、黑体、楷体_GB2312、仿宋_GB2312 (Windows XP SP3 宋体-PUA)
Windows Vista/7/2008 宋体/新宋体、黑体、楷体、仿宋、微软雅黑、SimSun-ExtB
那么每种字体能显示那些汉字呢?
Vista 之前的 Windows 中宋体/新宋体、黑体支持 GBK 1.0 字符集,
楷体_GB2312、仿宋_GB2312 支持 GB2312-80 字符集。
(注:Windows 3.X 只能支持 GB2312-80 字符集)
Vista 及之后的 Windows 中宋体/新宋体、黑体、楷体、仿宋、微软雅黑支持 GB18030-2000 字符集,
SimSun-ExtB 只支持 GB18030-2005 字符集扩展 B 部分。
下面对字符集进行简单的介绍:
GB2312-80 < GBK 1.0 < GB18030-2000 < GB18030-2005
GB2312-80 中的字符数量最少,GB18030-2005 字符数量最多。
GB2312-80 是最早的版本,字符数比较少;
GBK 1.0 中的汉字大致与 Unicode 1.1 中的汉字数量相同;
GB18030-2000 中的汉字大致与 Unicode 3.0 中的汉字数量相同,主要增加了扩展 A 部分;
GB18030-2005 中的汉字大致与 Unicode 4.1 中的汉字数量相同,主要增加了扩展 B 部分;
由于 Unicode 5.2 的发布,估计 GB18030 会在近期发布新版本,增加扩展 C 部分。
需要说明的是在 GB18030 中扩展 B 部分并不是强制标准。
如果想查看 GB18030 的标准文本,请访问 http://www.gb168.cn 中的强标阅读。
如果想了解 Unicode 的内容,请访问 http://www.unicode.org。
现在纠正网上普遍的一个错误:
GB18030-2000 和 GB18030-2005 都不支持单字节的欧元符号
与简体中文有关的代吗页如下:
936 gb2312 简体中文(GB2312)————其实是GBK
10008 x-mac-chinesesimp 简体中文(Mac)
20936 x-cp20936 简体中文(GB2312-80)
50227 x-cp50227 简体中文(ISO-2022)
51936 EUC-CN 简体中文(EUC)
52936 hz-gb-2312 简体中文(HZ)
54936 GB18030 简体中文(GB18030)
补充:
使用楷体_GB2312、仿宋_GB2312后,在 Windows 7/Vista/2008 中可能不再显示为对应的字体。
这是因为 Windows 7/Vista/2008 中有楷体、仿宋,默认情况下没有楷体_GB2312、仿宋_GB2312,字体名称相差“_GB2312”。
点我阅读全文

你所谓的辛苦,在别人眼中不过是安逸的代名词

on May 14, 2016 最后修改: on May 14, 2016
标签:aa

image alt

昨天我写了篇文说我已经连上了13天班,然后手贱发到我朋友圈,结果……

别提了,已经不想活了。我没想到一条链接竟激出了朋友圈那么多隐藏得很深的励志狗,这些家伙在我的“连上13天班”这个事实面前,无一不表示了不屑或鄙夷。

先是我的发小A说,13天就让你骄傲了,你到底有没有好好工作过?她说她老公最长时间300天没休息,每天九点前到公司,九点后才回家。

A的老公是程序猿,单位的技术大拿,A说他从来都是主动加班,不,更确切地说是没有休假和工作日之分,除非有特别重要的事情,否则他就去公司,不但没抱怨过辛苦,反倒经常听他说,剩余的工作三年都做不完。因为每次都是主动加班,所以自然也没有加班费。A起初也不太理解老公,问他累不累?结果他老公很淡然地反问:“做自己喜欢的事,怎么会累呢?”

那种平静淡然,是我等庸碌无为一说加班就呼天喊地的人无数想象的,A说,她和老公已经十年没去电影院了,唯一能把老公从工作状态中抽离出来的办法,就是订三张机票,全家人一起去旅游。

是的,这就是工作狂的境界,最让你郁闷的是,人家不觉得辛苦啊,人家觉得工作很快乐很嗨啊。你看,你腆着脸说自己好累好累快撑不下去的时候,人家从来不觉得自己在撑,而是最平凡,最普通的日常。

姐听得毛骨悚然,姐再也不羡慕他们的房子车子一年好几次的旅游了,唉,让臣妾这么努力付出,臣妾做不到啊。

我另一个同学B自己创业,在老家开了家医药超市,她说原本以为给自己打工会轻松些,结果一年至少340天在店里,虽然看店不累,但会觉得很烦,有时特想出去转转看看不同的风景,可是她一出去,就意味要关门或者找人来代看。她基本八点前都会准时开门,晚上最早也要8点回家,忙起来,十点十一点关门的时候都有,有时半夜还会有人敲门买药,她即使睡着了也会第一时间爬起来,不是为了挣那几毛钱,而是大半夜买药,肯定是急症,不能让顾客着急,她问我,你有大冬天夜里爬起来两三次的经历吗?

至此,我已经彻底哑口无言,害臊得憋不出一句话来了。

你看,这世上有多少人付出的比我们想象中要多得多,可怕的不是人家比我们优秀,而是人家明明比我们优秀,还要比我们努力一百倍,认清了这点儿,有时觉得人生简直TM是无望啊。比如A的老公,早就是公司合伙人了,可他从来没有一天懈怠过,爱好就是工作,那简直是传说中的永动机啊。

我找工作时,有个必要的前提,那就是双休,否则钱再多对我都没诱惑力,起点已经决定了基调,找工作时就奔着安逸去的,所以连上13天班,才会成为我的最高记录。我这些朋友,有的给自己打工,有的给别人打工,他们从来没受过“双休”,在他们看来,我经常去看电影、带孩子去公园玩、每天有时间写字读书,生活非常安逸舒适,一点儿也不“屌丝”。

我还有个朋友是这么回复的:我也是才十年没休息而已。

十年而已,而已……

原来,我所谓的特别拼,特别努力,在人家眼中,只不过是在换一种方式炫耀我的舒适与懒惰,只是安逸的代名词。

我记得上次见宋律师时,他提到了他司法考试前那段日子,他说那是他平生最努力最拼的一段日子,心无旁骛,每天醒来第一件事想的就是,要把哪些内容吃透,哪些知识点了解于心,看书看得累了,就去楼下小花园散散步,一边散步,还在一边默默地梳理知识点,晚上睡五六个小时是常有的事。但那时他从来不觉得自己有多么努力多么辛苦,相反只有一个念头,我一定要通过司法考试,于是每天朝这个目标努力,每天过得特充实特兴奋,他说这件事情已经过去十多年了,每每回忆起来,都觉得那段日子像是开了挂一般,每天除了学学学,压根没其他乱七八糟的心思,所以他以高分通过司法考试时,自己并不觉得意外,因为,“那是我应得的”。

这样的日子,其实你也不陌生吧,高考前,我们不都是这样过来的吗?白天就是做题背书,晚上寝室熄灯后,还要打着手电筒在被窝里学习一会儿,每个同学都在拼命读书,你追我赶,你有觉得自己苦自己累吗?至少我当时是没有。

是的,当你全身心地为了一个目标努力时,你就会努力往前跑,一直跑一直跑,直到够到目标为止。非常不幸,我们中的大多数,其实连个目标也没有。上班于我们而言,只是因为这是能养家糊口的最轻松的方式,至于额外付出,对不起,我想在家舒服地刷刷朋友圈或者看看电视。

别再抱怨自己多么努力多么辛苦,真正在努力付出的,才不会觉得自己辛苦,更不会抱怨,相反他会为了离目标更进一点喜不自胜,那种类似孩童的快乐,我们都曾体会过,可惜,我们早把那样的自己抛之身后了。

已经羞得不好意思再屁叨叨下去了。

听完这些励志狗的倾诉,原本打算晚上看电视消遣的我,果断坐到电脑前,默默码下以上文字。

当然啦,人各有志,这也不必强求。他喜欢工作,你喜欢舒服,只要自己满意,都挺好哒。
点我阅读全文

shell中的 find xargs exec 命令

on May 14, 2016 最后修改: on May 14, 2016
标签:Shell

1. find
find pathname -options [-print -exec -ok]

参数
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} /; ,注意{}和/;之间的空格。
例子:
find . -type f \( -name '*.[ch]' -o -name '*.cpp' -o -name 'CodeGen.*' \) -exec ./se-replace.py {} \+
这个例子找出当前目录及其子目录下的文件,从中搜索 .h 或 .c 或 .cpp 或 CodeGen.* 的文件,然后把这些文件传给 se-replae.py 执行。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find命令选项

-name:按照文件名查找文件。
-perm:按照文件权限来查找文件。
-prune:使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。Find命令还有-atime和-ctime选项,但它们都和-mtime选项。
-nogroup:查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件
-type 查找某一类型的文件
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab找到,该配置文件中包含了本系统中有关文件系统的信息
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中

例子:
当前目录及子目录中查找文件名以一个大写字母开头的文件并输出到标准输出:
find . -name "[A-Z]*" -print

在/etc目录中查找文件名以host开头的文件并输出到标准输出:
        find /etc -name "host*" -print
  1. exec
    find命令将所有匹配到的文件一起传递给exec执行。例子如下:

    匹配当前目录下的所有普通文件并ls列出来

     `find . -type f -exec ls -l {} /;`
    

    在/logs目录中查找更改时间在5日以前的文件并删除它们

     `find /logs -type f -mtime +5 -exec rm {} /;`
    

    在当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,在删除之前给出提示:

         find . -name "*.log" -mtime +5 -ok rm {} /;` 
    

    (-ok 与 -exec 作用一样,但是以一种更安全的模式执行)

    首先匹配所有文件名为“ passwd*”的文件,然后执行grep命令查看这些文件中是否存在一个sam用户

         `find /etc -name "passwd*" -exec grep "sam" {} /;`
    

    查找当前用户主目录下的所有文件

         find $HOME -print
         find ~ -print
    

    在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件

         find . -type f -perm 644 -exec ls -l {} /;
    

    查找系统中所有文件长度为0的普通文件,并列出它们的完整路径

         find / -type f -size 0 -exec ls -l {} /;
    

    查找系统中所有属于root组的文件

         find . -group root -exec ls -l {} /;
    

    查找当前目录中的所有目录并排序

         find . -type d |sort
    
  2. xargs
    xargs 与 exec 的作用类似,但是xargs与find 一起使用时,一般配合管道一起使用
    前面的输出转换为后方指令的参数输入
    使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。

    查找系统中的每一个普通文件,然后使用xargs命令测试它们分别属于哪类文件

     find . -type f -print | xargs file
    

    在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中

     find / -name "core" -print | xargs echo "" >/tmp/core.log
    

    在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限

     find . -perm -7 -print | xargs chmod o-w
    

    用grep命令在所有的普通文件中搜索hostname这个词

     find . -type f -print | xargs grep "hostname"
    

    统计当前目录下所有文件的大小,含子目录,精确到字节

     find ./ -type f | xargs ls -l | awk 'BEGIN{size=0}{size+=$5};END{print size}'
    
点我阅读全文

ls 列出文件目录(可以含子目录)及文件的完整路径

on May 14, 2016 最后修改: on May 14, 2016
标签:Shell

1、列出当前目录的文件、文件夹完整路径
ls -1 |awk '{print i$0}' i=`pwd`'/'

2、列出当前目录及子目录的文件、文件夹完整路径
ls -R |awk '{print i$0}' i=`pwd`'/'

2b) 列出当前目录及子目录下的文件夹完整路径
ls -FR | grep /$ | sed "s:^:`pwd`/:"

3、用find实现,好像运行要慢些
find / -name "*.*" -exec ls {} \;

4、递归列出当前目录及子目录名称
ls -FR | grep /$

5、递归列出当前目录及子目录名称,包括相关属性
ls -lR | grep "^d"

6、只列出当前目录下的子目录
用ls只列出子目录
ls -d */

点我阅读全文

ZeroNet on Raspberry Pi

on May 13, 2016 最后修改: on May 13, 2016
标签:ZeroNet
sudo apt-get update
sudo apt-get install python-pip
sudo pip install gevent --upgrade
sudo pip install msgpack-python --upgrade

wget https://github.com/HelloZeroNet/ZeroNet/archive/master.tar.gz
tar xvpfz master.tar.gz
cd ZeroNet-master
Start with python zeronet.py
Open http://127.0.0.1:43110/ in your browser
点我阅读全文

拼音搜索

on May 13, 2016 最后修改: on May 13, 2016
标签:Python

search.py

#!/opt/python3/bin/python3

#-------------------------------------------------------------------------------
# Name:        search phone num
# Purpose:     search phone num by pinyin
# Created:     19/01/2014
# Copyright:   (c) john 2014
# Licence:     <GPL3>
#-------------------------------------------------------------------------------

import read_write as rw
import os
import sys

pinyin_db=r'convert-utf-8.txt'
phone_db=r'PHONE.txt'

def is_chinese(uchar):
    if uchar >= u'\u4e00' and uchar<=u'\u9fa5':
        return True
    else:
        return False
def has_chinese(ustring):
    for c in ustring:
        if(is_chinese(c)):
            return True
        else:
            return False

def load_db():
    pinyin_list=rw.read2memory(pinyin_db).split('\n')
    pinyin_dic={}
    for pinyin in pinyin_list:
        pinyin_dic[pinyin[0]]=pinyin[1:-1]
    phone_list=rw.read2memory(phone_db).split('\n')
    p2=list()
    index=0
    for p in phone_list:
        for ps in p.split('\t'):
            for s in ps:
                if(is_chinese(s)):
                    try:
                        p2[index] += pinyin_dic[s]
                    except:
                        p2.append(pinyin_dic[s])
            try:
                p2[index] += " "
            except:
                pass

        index += 1
    #print(len(p2),len(phone_list))
    return phone_list,p2

def search(phone_list,pinyin_list,key):
    index=0
    if not has_chinese(key):
        for pinyin in pinyin_list:
            if (pinyin.__contains__(key)):
                print(phone_list[index])
            index += 1
    else:
        for phone in phone_list:
            if (phone.__contains__(key)):
                print(phone)
    pass

def get_key():
    if len(sys.argv)>1:
        try:
            key_word=sys.argv[1]+" "+sys.argv[2]
        except:
            key_word=sys.argv[1]
        sys.argv=sys.argv[0]
    else:
        key_word=input(">> ")
        tmp=os.system('clear')
    if (key_word=='exit'):
        os._exit(0)
    return key_word

def main():
    db=load_db()
    while(1>0):
        key=get_key()
        search(db[0],db[1],key)
    pass

if __name__ == '__main__':
    main()
点我阅读全文

QQ Image

on May 13, 2016 最后修改: on May 13, 2016
标签:Python
import os
import io
import re
import gc
import hashlib
import shutil
import time


def get_file_list(root):
    file_list = [];
    for root, dirs, files in os.walk(root):
        for f in files:
            path=root+os.path.sep+f
            file_list.append(path)
    return file_list

def show_list(a_list):
    for i in a_list:
        print(i)

def write2file(a_list,file_name):
    f=open(file_name,'w',encoding='utf-8')
    for line in a_list:
        f.write(line+'\n')
    f.close()

def write_part2file(file_name,a_list,index_list):
    f=open(file_name,'w',encoding='utf8')
    for i in index_list:
        f.write(a_list[i]+'\n')
    f.close()

def append2file(file_path,a_list):
    f=open(file_path,'a',encoding='utf8')
    for i in a_list:
        f.write(i+'\n')
    f.close()
    print("Append %d md5sum to database"%(len(a_list)))

def read2memory(file_path):
    with open(file_path,'r',encoding='utf8') as f:
        return f.read()

def read2memory2(file_path):
    return open(file_path,'r',encoding='utf8').read()

def get_file_info(file_path):
    size=os.path.getsize(file_path)
    modify_time=os.path.getmtime(file_path)
    last_access_time=os.path.getctime(file_path)
    creat_time=os.path.getctime(file_path)
    return [file_path,size,creat_time,modify_time,last_access_time]

def get_md5sum(file_path):
    size=os.path.getsize(file_path)
    if(size<30*1024*1024):
        with open(file_path.strip(),'rb') as f:
            data=f.read()
            md5sum=hashlib.md5(data).hexdigest()
    else:
        m = hashlib.md5()
        file = io.FileIO(file_path,'r')
        bytes = file.read(8192)
        while(bytes != b''):
            m.update(bytes)
            bytes = file.read(8192)
            file.close()
        md5sum=m.hexdigest()
    return md5sum

def get_md5sum_list(file_list):
    md5list=list()
    len_file_list=len(file_list)
    index=0
    for i in file_list:
        md5sum=get_md5sum(i)
        md5list.append( md5sum )
        #print(("%d\t%d\t%.3f/100")%(len_file_list,index+1,((index+1)*100)/len_file_list))
        index+=1
    return md5list

def get_size_list(file_list):
    file_size_list=list()
    for i in file_list:
        file_size=os.path.getsize(i)
        file_size_list.append(file_size)
    return file_size_list

def get_same_md5_index_from_self(md5list):
    same_md5_index=list()
    temp=list()
    index=0
    for i in md5list:
        if temp.__contains__(i):
            same_md5_index.append(index)
        else:
            temp.append(i)
        index+=1
    return same_md5_index

def get_same_md5_index_from_md5database(md5list,database_list):
    database_set=set(database_list)
    index=0
    same_md5_index=list()

    for i in md5list:
        if database_set.__contains__(i):
            same_md5_index.append(index)
        index+=1
    #database_set.

    #print(len(database_set))
    print("Find %d same files compared with database"%(len(same_md5_index)))
    return same_md5_index

def get_small_file_index_list(size_list):
    small_size_index=list()
    index=0
    for i in size_list:
        if (i<1024*200):
            small_size_index.append(index)
        index+=1
    return small_size_index

def del_file(file_list,index):
    for i in index:
        try:
            os.remove(file_list[i])
        except:
            print("Can't delete %s"%(i))
            pass
        #print("del %s,%d"%(file_list[i],len(file_list)))

def move_file(source,dest):
    try:
        shutil.move(source,dest)
        #print(source,dest)
    except:
        pass

def move_filelist(a_list,dest_dir):
    for i in a_list:
        move_file(i, os.path.join(dest_dir,i.split('\\')[-1]))

def get_filelist_by_size(file_list):
    list_1024k=list()
    list_900k=list()
    list_800k=list()
    list_700k=list()
    list_600k=list()
    list_500k=list()
    list_400k=list()
    list_300k=list()
    list_200k=list()
    list_100k=list()
    for i in file_list:
        size=os.path.getsize(i)
        if size >1024*1024:
            list_1024k.append(i)
        elif size > 900 * 1024:
            list_900k.append(i)
        elif size > 800 * 1024:
            list_800k.append(i)
        elif size > 700 * 1024:
            list_700k.append(i)
        elif size > 600 * 1024:
            list_600k.append(i)
        elif size > 500 * 1024:
            list_500k.append(i)
        elif size > 400 * 1024:
            list_400k.append(i)
        elif size > 300 * 1024:
            list_300k.append(i)
        elif size > 200 * 1024:
            list_200k.append(i)
        elif size > 100 * 1024:
            list_100k.append(i)
    return [list_100k,list_200k,list_300k,list_400k,list_500k,list_600k,list_700k,list_800k,list_900k,list_1024k]

def get_filelist_by_type(file_list):
    jpg=r'jpg'
    gif=r'gif'
    jpg_list=list()
    gif_list=list()
    other_list=list()
    for i in file_list:
        if re.search(jpg,i,re.I):
            jpg_list.append(i)
        elif re.search(gif,i,re.I):
            gif_list.append(i)
        else:
            other_list.append(i)
    return [jpg_list,gif_list,other_list]

def move_by_size(file_list,file_type,root):
    file_type_root=os.path.join(root,file_type)
    d_100k=os.path.join(file_type_root,'100k')
    d_200k=os.path.join(file_type_root,'200k')
    d_300k=os.path.join(file_type_root,'300k')
    d_400k=os.path.join(file_type_root,'400k')
    d_500k=os.path.join(file_type_root,'500k')
    d_600k=os.path.join(file_type_root,'600k')
    d_700k=os.path.join(file_type_root,'700k')
    d_800k=os.path.join(file_type_root,'800k')
    d_900k=os.path.join(file_type_root,'900k')
    d_1024k=os.path.join(file_type_root,'1024k')
    if not os.path.exists(file_type_root):
        os.mkdir(file_type_root)
        os.mkdir(d_100k)
        os.mkdir(d_200k)
        os.mkdir(d_300k)
        os.mkdir(d_400k)
        os.mkdir(d_500k)
        os.mkdir(d_600k)
        os.mkdir(d_700k)
        os.mkdir(d_800k)
        os.mkdir(d_900k)
        os.mkdir(d_1024k)
    #show_list(file_list[0])
    move_filelist(file_list[0],d_100k)
    move_filelist(file_list[1],d_200k)
    move_filelist(file_list[2],d_300k)
    move_filelist(file_list[3],d_400k)
    move_filelist(file_list[4],d_500k)
    move_filelist(file_list[5],d_600k)
    move_filelist(file_list[6],d_700k)
    move_filelist(file_list[7],d_800k)
    move_filelist(file_list[8],d_900k)
    move_filelist(file_list[9],d_1024k)

def move(file_list,dest_root):
    list_by_type=get_filelist_by_type(file_list)

    move_by_size( get_filelist_by_size ( list_by_type[0]),'jpg',dest_root)
    move_by_size( get_filelist_by_size(list_by_type[1]),'gif',dest_root)
    move_by_size( get_filelist_by_size(list_by_type[2]),'other',dest_root)
    print(("Move %d files to %s")%(len(file_list),dest_root))

def remove_same_file_from_source_dir(dir):
    file_list= get_file_list(dir)
    md5list=get_md5sum_list(file_list)
    write2file(md5list,'removed_same_md5.txt')
    same_md5_index_list=get_same_md5_index_from_self(md5list)
    del_file(file_list,same_md5_index_list)
    print("Del %d same files from source dir"%(len(same_md5_index_list)))

    cont=0
    for i in same_md5_index_list:
        md5list.pop(i-cont)
        cont+=1
    return md5list


def log_same_file(dir,log_path):
    file_list=get_file_list(dir)
    md5list=get_md5sum_list(file_list)
    same_md5_index_list=get_same_md5_index_from_self(md5list)
    write_part2file(log_path,file_list,same_md5_index_list)


def remove_small_file(dir):
    file_list= get_file_list(dir)
    file_size_list=get_size_list(file_list)
    small_size_index_list=get_small_file_index_list(file_size_list)
    del_file (file_list,small_size_index_list)
    print("Del %d small files"%(len(small_size_index_list)))

def remove_same_file_from_md5database(dir,source_md5sum_list,md5database):
    same_md5_list=list()
    oldmd5list=read2memory(md5database).split('\n')
    print("Read %d Lines from md5database"%(len(oldmd5list)))
    file_list = get_file_list(dir)
    print("The source dir have %d files"%(len(file_list)))
    same_md5_index_from_database=get_same_md5_index_from_md5database(source_md5sum_list,oldmd5list)
    print("Del %d same files from DIR"%(len(same_md5_index_from_database)))
    del_file(file_list,same_md5_index_from_database)
    for i in same_md5_index_from_database:
        #print (i)
        try:
            same_md5_list.append(source_md5sum_list[i])

        except:
            #print(i,len(source_md5sum_list))
            pass
    difference_list=list(set(source_md5sum_list).difference(set(same_md5_list)))
    #print(len(source_md5sum_list),len(same_md5_index_from_database),len(same_md5_list),len(difference_list))
    return difference_list

def restor_qq_image():
    dir=r"C:\Users\acc\Documents\Tencent Files\qq_acc\Image"
    #dir=r"C:\Users\acc\Documents\Tencent Files\qq_acc\Image\Group"
    dest=r"E:\QQ_Image"
    md5database=r"E:\qq_image\qq_image_md5.txt"

    remove_small_file(dir)
    source_md5sum_list=remove_same_file_from_source_dir(dir)
    dirrerence_source_md5sum_list=remove_same_file_from_md5database(dir,source_md5sum_list,md5database)
    append2file(md5database,dirrerence_source_md5sum_list)
    move(get_file_list(dir),dest)

def main():
    start_time=time.clock()

    restor_qq_image()
    end_time=time.clock()
    print(("ALL time:%.5f(S)")%(end_time-start_time))
    #time.sleep(20)
    input("Press any key to continu ......")
    pass

if __name__ == '__main__':
    main()
点我阅读全文
Add new post

Title

21 hours ago · 2 min read ·
3 comments
1 hours ago
标签:
Body
点我阅读全文

Title

21 hours ago · 2 min read 1 hours ago
标签:

0 Comments:

user_name1 day ago
Reply
Body
<< 1 >>
This page is a snapshot of ZeroNet. Start your own ZeroNet for complete experience. Learn More