为了账号安全,请及时绑定邮箱和手机立即绑定

即使文件相同,filecmp 也会返回 False

即使文件相同,filecmp 也会返回 False

慕桂英546537 2024-01-12 10:33:12
我试图在两个文件之间进行比较filecmp,问题是结果始终是"No, the files are NOT the same",这意味着False 即使文件是相同的。我正在向两个不同的文件写入相同的内容。首先我写入文件revision_1.txt:original_stdout = sys.stdoutwith open('revision_1.txt', 'w') as rev1:       sys.stdout = rev1       print(revision)  # revision is output from command i took beforesys.stdout = original_stdoutif filecmp.cmp('revision_1.txt', 'revision_2.txt'):    # revision_2.txt is file I c    print("Both the files are same")else:    # Do whatever you want if the files are NOT the same    print("No, the files are NOT the same")original_stdout = sys.stdoutwith open('revision_2.txt', 'w') as rev2:       sys.stdout = rev2       print(revision)  # revision is output from command i took beforesys.stdout = original_stdout我的目标是如果文件相等 - 停止脚本。如果不是,它将重写revision_2.txt然后发送邮件,(我已经编写了邮件代码)。
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

尝试将shallow设置为false(默认为True),即

if filecmp.cmp('revision_1.txt', 'revision_2.txt', shallow=False):

从文档中:如果为 true,则具有相同 os.stat() 签名的文件被视为相等。否则,将比较文件的内容。

https://docs.python.org/3/library/filecmp.html#filecmp.cmp


查看完整回答
反对 回复 2024-01-12
?
皈依舞

TA贡献1851条经验 获得超3个赞

如何忽略 message-id (我只需要修订值)?


查看脚本输出:不等于修订版:fpc1-1603878922-228


FFFFFFF 修订版:fpc1-1603878922-228


FFFFFFFF


脚本:


import smtplib

import email.message

from email.mime.text import MIMEText

from ncclient import manager

from ncclient.xml_ import *

import sys

import time

import filecmp


# Connecting to juniper cc-vc-leg

conn = manager.connect(

        host='10.1.1.1',

        port='830',

        username='test',

        password='test',

        timeout=10,

        device_params={'name':'junos'},

        hostkey_verify=False)


# Take juniper commands

resault = conn.command('show version | match Hostname', format='text')

revision = conn.command('show system commit revision', format='text')

compare_config = conn.compare_configuration(rollback=1)


# Open & read file vc-lg_rev.text

f = open('vc-lg_rev.text', 'r')

d = f.read()


# Check if revision output is equal to file "vc-lg_rev.text"

# If equal exit the script

if  (revision == d):

       print('equal')

       exit()

       print('I hop script stopped')

else:

       print('Not equal')

       print(revision)

       print('FFFFFFF')

       print(d)

       print('FFFFFFF')


# To save last revision number to "vc-lg_rev.text"

with open('vc-lg_rev.text', 'w', buffering=1) as rev1:

        rev1.write(str(revision))

        rev1.flush()

rev1.close()



# This is how i copy "compare_config" output to file "vc-lg_compare.text"

original_stdout = sys.stdout

with open('vc-lg_compare.text', 'w') as a:

        sys.stdout = a

        print(compare_config)

sys.stdout = original_stdout


def send_email(compare):

    server = smtplib.SMTP('techunix.technion.ac.il', 25)

    email_reciver = 'rafish@technion.ac.il', 'rafi1shemesh@gmail.com'

    message = f"'Subject': mail_subject \n\n {compare}"

    ID = 'Juniper_Compare'

    server.sendmail(ID, email_reciver, message)


with open('vc-lg_compare.text', 'r') as compare:   # "as" means file object called compare

        text = str(compare.read())                 # I want to recive the output as string to look specific word in the file

        if (text.find('+') > -1) or (text.find('- ') > -1):

                send_email(text)



查看完整回答
反对 回复 2024-01-12
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

您对文件的使用不寻常:


import filecmp


revision = "08/15"


with open('revision_1.txt', 'w') as rev1:

      rev1.write(revision)


with open('revision_2.txt', 'w') as rev2:

      rev2.write(revision)


with open('revision_3.txt', 'w') as rev3:

      rev3.write(revision + "-42")


# should compare equal

if filecmp.cmp('revision_1.txt', 'revision_2.txt'):

    print("Identical")

else:

    print("No, the files are NOT the same")


# should NOT compare equal

if filecmp.cmp('revision_1.txt', 'revision_3.txt'):

    print("Identical")

else:

    print("No, the files are NOT the same")

印刷


Identical

No, the files are NOT the same


查看完整回答
反对 回复 2024-01-12
  • 3 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信