bbfile.py

作者: 方正俊辰 | 来源:发表于2020-03-17 20:41 被阅读0次

       此脚本为了解决文件比对去重找不同的问题,此为原创。可以解决比对文件,并且输出文件2比文件1多的行数。比对以行为单位,分别作为函数的元素进行比对,充分应用了python中文件去重的问题。


import subprocess

def rd_a():

a=input('请输入你要比对的文件1及其绝对路径:')

result=subprocess.run('ls a',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

if True:

with open('a')as fobj:

s1=set(fobj)

return s1

else:

print('你所输入的文件不存在')

def rd_b():

b =input('请输入你要比对的文件2及其绝对路径:')

result = subprocess.run('ls b', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

if True:

with open('b')as fobj:

s2 =set(fobj)

return s2

else:

print('你所输入的文件不存在')

def bdui_ab():

x=rd_a()

y=rd_b()

ab=y-x

print(ab)

def demo_info():

info='''

    (0) 输入文件1:    (1) 输入文件2:    (2) 输出文件2比文件1多的行    (3) 退出

    请输入0/1/2/3/ :'''

    cmds = {'0': rd_a, '1': rd_b, '2': bdui_ab}

while True:

choice =input(info).strip()[0]

if choicenot in '0123':

print('请重新输入:')

continue

        if choice =='3':

break

        cmds[choice]()

if __name__ =='__main__':

demo_info()


此处举例说明:   *特别说明,该脚本适用于linux环境下的文件比对。

文件1  /tmp/mima1

cat  -n /tmp/mima1 #下方为文件内容


    1 root:x:0:0:root:/root:/bin/bash

    2 bin:x:1:1:bin:/bin:/sbin/nologin

    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

    4 adm:x:3:4:adm:/var/adm:/sbin/nologin

    5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    6 sync:x:5:0:sync:/sbin:/bin/sync

    7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    8 halt:x:7:0:halt:/sbin:/sbin/halt

    9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    10 operator:x:11:0:operator:/root:/sbin/nologin

    11 games:x:12:100:games:/usr/games:/sbin/nologin

    12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    13 nobody:x:99:99:Nobody:/:/sbin/nologin

    14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

    15 dbus:x:81:81:System message bus:/:/sbin/nologin

    16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin

    17 abrt:x:173:173::/etc/abrt:/sbin/nologin

    18 libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin

    19 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin

    20 colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin

    21 saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin

    22 rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin

    23 chrony:x:995:993::/var/lib/chrony:/sbin/nologin

    24 qemu:x:107:107:qemu user:/:/sbin/nologin

    25 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

    26 usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin

    27 geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin

    28 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

    29 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

    30 radvd:x:75:75:radvd user:/:/sbin/nologin

    31 setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin

    32 pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

    33 gdm:x:42:42::/var/lib/gdm:/sbin/nologin

    34 gnome-initial-setup:x:992:987::/run/gnome-initial-setup/:/sbin/nologin

    35 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

    36 avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

    37 postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    38 ntp:x:38:38::/etc/ntp:/sbin/nologin

    39 tcpdump:x:72:72::/:/sbin/nologin

    40 fz:x:1000:1000:fz:/home/fz:/bin/bash

    41 mm:x:1001:1001::/home/mm:/bin/bash

    42 zhangsan:x:1002:1002::/home/zhangsan:/bin/bash

    43 admin:x:1003:1003::/home/admin:/bin/bash

    44 tom:x:1004:1004::/home/tom:/bin/bash

    45 softadm:x:1005:1005::/home/softadm:/bin/bash

    46 useradm:x:1006:1006::/home/useradm:/bin/bash

    47 zengre:x:1007:1007::/home/zengre:/bin/bash

    48 zengye:x:1008:1008::/home/zengye:/bin/bash

    49 sssd:x:991:986:User for sssd:/:/sbin/nologin

    50 jim:x:1009:1009::/home/jim:/bin/bash

    51 kate:x:1010:1010::/home/kate:/bin/bash

    52 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

    53 usera:x:1011:1011::/home/usera:/bin/bash

    54 userb:x:1012:1012::/home/userb:/bin/bash

    55 zabbix:x:1013:1013::/home/zabbix:/sbin/nologin

    56 mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false

    57 student:x:1014:1014::/home/student:/bin/bash

    58 word:x:1015:1015::/home/word:/bin/bash

    59 word1:x:1016:1016::/home/word1:/bin/bash

    60 word2:x:1017:1017::/home/word2:/bin/bash


文件2为 /tmp/mima2

cat -n /tmp/mima2


    1 root:x:0:0:root:/root:/bin/bash

    2 bin:x:1:1:bin:/bin:/sbin/nologin

    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

    4 adm:x:3:4:adm:/var/adm:/sbin/nologin

    5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    6 sync:x:5:0:sync:/sbin:/bin/sync

    7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    8 halt:x:7:0:halt:/sbin:/sbin/halt

    9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    10 operator:x:11:0:operator:/root:/sbin/nologin

    11 games:x:12:100:games:/usr/games:/sbin/nologin

    12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

    13 nobody:x:99:99:Nobody:/:/sbin/nologin

    14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

    15 dbus:x:81:81:System message bus:/:/sbin/nologin

    16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin

    17 abrt:x:173:173::/etc/abrt:/sbin/nologin

    18 libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin

    19 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin

    20 colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin

    21 saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin

    22 rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin

    23 chrony:x:995:993::/var/lib/chrony:/sbin/nologin

    24 qemu:x:107:107:qemu user:/:/sbin/nologin

    25 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

    26 usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin

    27 geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin

    28 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

    29 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

    30 radvd:x:75:75:radvd user:/:/sbin/nologin

    31 setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin

    32 pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

    33 gdm:x:42:42::/var/lib/gdm:/sbin/nologin

    34 gnome-initial-setup:x:992:987::/run/gnome-initial-setup/:/sbin/nologin

    35 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

    36 avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

    37 postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    38 ntp:x:38:38::/etc/ntp:/sbin/nologin

    39 tcpdump:x:72:72::/:/sbin/nologin

    40 fz:x:1000:1000:fz:/home/fz:/bin/bash

    41 mm:x:1001:1001::/home/mm:/bin/bash

    42 zhangsan:x:1002:1002::/home/zhangsan:/bin/bash

    43 admin:x:1003:1003::/home/admin:/bin/bash

    44 tom:x:1004:1004::/home/tom:/bin/bash

    45 softadm:x:1005:1005::/home/softadm:/bin/bash

    46 useradm:x:1006:1006::/home/useradm:/bin/bash

    47 zengre:x:1007:1007::/home/zengre:/bin/bash

    48 zengye:x:1008:1008::/home/zengye:/bin/bash

    49 sssd:x:991:986:User for sssd:/:/sbin/nologin

    50 jim:x:1009:1009::/home/jim:/bin/bash

    51 kate:x:1010:1010::/home/kate:/bin/bash

    52 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

    53 usera:x:1011:1011::/home/usera:/bin/bash

    54 userb:x:1012:1012::/home/userb:/bin/bash

    55 zabbix:x:1013:1013::/home/zabbix:/sbin/nologin

    56 mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false

    57 student:x:1014:1014::/home/student:/bin/bash

    58 word:x:1015:1015::/home/word:/bin/bash

    59 word1:x:1016:1016::/home/word1:/bin/bash

    60 word2:x:1017:1017::/home/word2:/bin/bash

    61 zhangsan:x:1002:1002::/home/zhangsan:/bin/bash

    62 admin:x:1003:1003::/home/admin:/bin/bash

    63 tom:x:1004:1004::/home/tom:/bin/bash

    64 softadm:x:1005:1005::/home/softadm:/bin/bash

    65 useradm:x:1006:1006::/home/useradm:/bin/bash

    66 zengre:x:1007:1007::/home/zengre:/bin/bash

    67 zengye:x:1008:1008::/home/zengye:/bin/bash

    68 sssd:x:991:986:User for sssd:/:/sbin/nologin

    69 jim:x:1009:1009::/home/jim:/bin/bash

    70 kate:x:1010:1010::/home/kate:/bin/bash

    71 ss2  dsda

    72 ss23d  dsda


下方为执行效果:

[root@web1 py]# python3 bbfile.py

    (0) 输入文件1:

    (1) 输入文件2:

    (2) 输出文件2比文件1多的行

    (3) 退出

    请输入0/1/2/3/ :0

请输入你要比对的文件1及其绝对路径:/tmp/mima1   #此处必要判断

    (0) 输入文件1:

    (1) 输入文件2:

    (2) 输出文件2比文件1多的行

    (3) 退出

    请输入0/1/2/3/ :2

请输入你要比对的文件1及其绝对路径:/tmp/mima2

请输入你要比对的文件2及其绝对路径:/tmp/mima1     

set()                                 #由于 /tmp/mina1 是/tmp/mina2 的子集, 故此处输出为空

    (0) 输入文件1:

    (1) 输入文件2:

    (2) 输出文件2比文件1多的行

    (3) 退出

    请输入0/1/2/3/ :2

请输入你要比对的文件1及其绝对路径:/tmp/mima1

请输入你要比对的文件2及其绝对路径:/tmp/mima2

{'ss2  dsda\n', 'ss23d  dsda\n'} #去重后显示多的行

    (0) 输入文件1:

    (1) 输入文件2:

    (2) 输出文件2比文件1多的行

    (3) 退出

    请输入0/1/2/3/ :3      #直接退出

相关文章

  • bbfile.py

    此脚本为了解决文件比对去重找不同的问题,此为原创。可以解决比对文件,并且输出文件2比文件1多的行数。比对以行为单...

网友评论

      本文标题:bbfile.py

      本文链接:https://www.haomeiwen.com/subject/sjuxyhtx.html