请问如何将批量存储在 TXT 文本中的照片信息批量导出,并将导出的照片信息命名为对应人员的证件号码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kkk414
V2EX    问与答

请问如何将批量存储在 TXT 文本中的照片信息批量导出,并将导出的照片信息命名为对应人员的证件号码?

  •  
  •   kkk414 2015-10-24 19:21:40 +08:00 4610 次点击
    这是一个创建于 3646 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因工作需要,现在要处理大量人员数据。
    而数据源全是 TXT 文本保存,内容有个人身份信息和头像照片。
    现在需要需要将 TXT 中的照片批量导出,并命名为对应人员的身份证号码。

    不知道有无相关处理经验高手不吝赐教

    测试源 TXT : http://pan.baidu.com/s/1kTrQYUj
    第 1 条附言    2015-10-25 00:44:37 +08:00
    说明一下大家关心的问题,本贴所提供的测试数据是处理过的(姓名、证件号,头像都没有对应关系)
    如遇红领巾 V 友,请 mail:414kkk[诶他]163.com .
    29 条回复    2015-10-26 19:01:59 +08:00
    virusdefender
        1
    virusdefender  
       2015-10-24 19:29:19 +08:00
    后面的一堆看着像 base64

    写个 Python 脚本分割就行啊
    orzfly
        2
    orzfly  
       2015-10-24 19:35:23 +08:00
    "此项暂不返回核查结果"……

    今天刚好看到一个帖子里的图……啧啧。
    http://static.wooyun.org/wooyun/upload/201510/20201057358328cb04f97b3d35b20325bacbdb62.png
    http://www.wooyun.org/bugs/wooyun-2015-0148164
    just1
        3
    just1  
       2015-10-24 20:07:00 +08:00 via Android
    txt 啥时能保存图像了
    vmebeh
        4
    vmebeh  
       2015-10-24 20:10:51 +08:00
    前面几个应该是标志位,然后是 Base64 的二进制数据, JFIF 格式的 JPG
    kkk414
        5
    kkk414  
    OP
       2015-10-24 20:35:15 +08:00
    @orzfly 对这是人行的核查结果,有办法批量导出吗?
    kkk414
        6
    kkk414  
    OP
       2015-10-24 20:38:50 +08:00
    @virusdefender 不懂 Python 请指教
    kkk414
        7
    kkk414  
    OP
       2015-10-24 20:39:56 +08:00
    @just1 也是头次遇到,单独把后面的一串字条保存成 JPG 又打不开
    kkk414
        8
    kkk414  
    OP
       2015-10-24 20:40:56 +08:00
    @vmebeh 谢谢分析,求处理方法
    ferock
        9
    ferock  
    PRO
       2015-10-24 20:46:39 +08:00 via Android
    伸手党
    gdtv
        10
    gdtv  
       2015-10-24 20:51:04 +08:00   2
    PHP 的处理方法:

    ><?php
    header('Content-Type: text/html; charset=');
    $d = dir(dirname(__FILE__));
    while(false !== ($v = $d->read())) {
    if(strpos($v,'TXT')){
    $file_str = file_get_contents($v);
    $file_lines = explode("\r\n",$file_str);
    foreach($file_lines as $file_line){
    preg_match('/[\s]{10,}([\d]{18}[ⅩxX]{0,1}).*[\s]{5,}00(.*)$/',$file_line,$file_parts);
    if($file_parts[1] && $file_parts[2]){
    file_put_contents($file_parts[1].'.jpg', base64_decode($file_parts[2]));
    }
    }
    }
    }
    echo 'ok';

    将以上代码保存成一个.php 文件,和所有数据源 TXT 文件一起放到同一个目录,然后运行
    Zzzzzzzzz
        11
    Zzzzzzzzz  
       2015-10-24 20:57:18 +08:00
    你这直接把名字、身份证号和照片合并成的文件当例子放出来下载不好吧
    kkk414
        12
    kkk414  
    OP
       2015-10-24 21:09:08 +08:00
    @Zzzzzzzzz 除了头像,其它信息都处理过了,都是随机改的。
    kkk414
        13
    kkk414  
    OP
       2015-10-24 21:12:53 +08:00
    @gdtv 谢谢提供方法 ,
    COPY 了代码并存 PHP ,但 PHP 要用什么运行?双击 PHP 文件打开了 IE ,结果 IE 里还是显示这段代码
    loading
        14
    loading  
       2015-10-24 21:17:01 +08:00 via Android
    建议楼主用网上的图片做几个样本文件,提供给大家测试,不然你这种伸手法是没结果的。
    loading
        15
    loading  
       2015-10-24 21:20:20 +08:00 via Android
    看完楼主还问如何运行 php ,自己居然不先自己搜索一下…

    好人不代表是保姆!

    也许有偿会好一些,楼主来个价格吧,也许睡醒这个问题就解决了,目测不需要你一周的工资。
    kkk414
        16
    kkk414  
    OP
       2015-10-24 21:35:21 +08:00
    @loading 谢谢提醒,你说的也在理
    gdtv
        17
    gdtv  
       2015-10-24 22:07:51 +08:00
    @loading 楼主不懂 PHP ,让他运行 PHP 确实是件麻烦事,希望有戴红领巾的大侠写个 exe 给楼主直接运行吧
    abelyao
        18
    abelyao  
       2015-10-24 22:40:32 +08:00
    EXE 工具不难写,好奇的是数据来源…
    loading
        19
    loading  
       2015-10-24 22:43:07 +08:00 via Android
    @abelyao 这个不可细问,涉及商业秘密吧~
    icedx
        20
    icedx  
       2015-10-24 23:14:16 +08:00
    楼主要么分享我数据 要么买我程序 我已经写好了
    abelyao
        21
    abelyao  
       2015-10-24 23:15:16 +08:00
    @loading 就怕数据是从哪里弄来的… 毕竟 demo 都没有打码,原名及身份证信息都…
    kkk414
        22
    kkk414  
    OP
       2015-10-25 00:32:48 +08:00
    @abelyao 数据来源是本地人行的核查数据,跟 @orzfly 提的内容毫不相关(人家的是考试系统练手的), @abelyao @icedx @loading 多想了,如果真如你们所疑,有通过非正途获得数据的技能,又何愁要来此请大家教? 大家心里有点想法也是正常的,还是要谢谢各位关注。
    sualwu
        23
    sualwu  
       2015-10-25 09:59:03 +08:00   1
    Linux 下, 一行命令就可以了:
    awk '{if(NF == 3){filename=substr($2,1,18);sub(/^00/,"",$3);system("echo "$3"|base64 -d >"filename)}}' 10355.TXT

    kkk414
        24
    kkk414  
    OP
       2015-10-25 11:26:45 +08:00
    @sualwu 谢谢提供参考方案,请问如何批量处理多个 TXT 文档? 另外这种方案只能在 Linux 下实现吗?楼上也有 @gdtv 红领巾 V 友写了 PHP 可惜我是个门外汉,再次谢谢他
    horsley
        25
    horsley  
       2015-10-25 13:40:40 +08:00
    门外汉的话,还是花点钱吧,有钱,给你做批量处理 做独立运行 exe 都不是问题
    kkk414
        26
    kkk414  
    OP
       2015-10-25 14:59:25 +08:00
    @horsley 有钱能使人推磨吗?
    感觉 V 友中也有不乏红领巾,交流和买卖是两码事。祝你工作顺利
    kkk414
        27
    kkk414  
    OP
       2015-10-26 15:08:15 +08:00
    @gdtv 按你的方案已经单个文件成功导出了,但是多个 TXY 批量的导出只能到 7 千多张,请教一下

    Fatal error: Maximum execution time of 60 seconds exceeded in D:\1.php on line 12
    gdtv
        28
    gdtv  
       2015-10-26 16:03:17 +08:00   1
    @kkk414 改了一下,你再试试

    <?php
    header('Content-Type: text/html; charset=');
    $d = dir(dirname(__FILE__));
    while(false !== ($v = $d->read())) {
    if(strpos($v,'TXT')){
    set_time_limit(120);
    $file_str = file_get_contents($v);
    $file_lines = explode("\r\n",$file_str);
    foreach($file_lines as $file_line){
    preg_match('/[\s]{10,}([\d]{18}[ⅩxX]{0,1}).*[\s]{5,}00(.*)$/',$file_line,$file_parts);
    if($file_parts[1] && $file_parts[2]){
    file_put_contents($file_parts[1].'.jpg', base64_decode($file_parts[2]));
    }
    }
    }
    }
    echo 'ok';
    kkk414
        29
    kkk414  
    OP
       2015-10-26 19:01:59 +08:00
    set_time_limit(120); 搜了下也可以通过修改 php.ini 设定是限。
    OK 了 感谢 @gdtv 指点!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2533 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 10:33 PVG 18:33 LAX 03:33 JFK 06:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86