Python 即使输出与原始输出相同,代码仍保持保存文档?

Python 即使输出与原始输出相同,代码仍保持保存文档?,python,python-2.7,csv,if-statement,for-loop,Python,Python 2.7,Csv,If Statement,For Loop,在我下面的代码中,出于某种原因,它一直将输出数据写入文件,即使我的输出数据与新生成的数据相同 我正在尝试使它只在不同的时候保存,为了重新创建我的问题,请至少运行脚本三次,并且它不应该再次打印 代码示例 有没有解决此问题的方法?以下内容读取整个文件,而您可能只想读取一行: old_html = old_html.read() 另外,我个人觉得这种重复使用变量名的方式非常令人困惑。这是因为您打开了文件,然后进行比较,因为它是相同的,所以在文件中什么也不保存 比较代码底部部分后打开文件: impor

在我下面的代码中,出于某种原因,它一直将输出数据写入文件,即使我的输出数据与新生成的数据相同

我正在尝试使它只在不同的时候保存,为了重新创建我的问题,请至少运行脚本三次,并且它不应该再次打印

代码示例
有没有解决此问题的方法?

以下内容读取整个文件,而您可能只想读取一行:

old_html = old_html.read()

另外,我个人觉得这种重复使用变量名的方式非常令人困惑。

这是因为您打开了文件,然后进行比较,因为它是相同的,所以在文件中什么也不保存

比较代码底部部分后打开文件:

import csv

def get_html_table(data):
    s = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
    <body>
        <table id="gradient-style">
            <tbody>\n"""
    for row in data:
        s += '        <tr>'
        for counter, cell in enumerate(row):
            s += r'<td>{}</td>'.format(cell)
        s += '</tr>\n'
    s += """            </tbody>
        </table>
    </body>
</html>"""
    return s

with open('testoutput.html', 'rb') as old_html:
    old_html = old_html.read()

with open('random.csv') as ifile:
    data = []

    for counter, row in enumerate(csv.reader(ifile)):
        if counter != 0:
            datatoapp = [row[0], row[1], row[2], row[3]]
            data.append(datatoapp)    

    html_data = get_html_table(data)

if old_html != html_data:
    if html_data:
        with open('testoutput.html', "wb") as ofile:
            ofile.write(html_data)
导入csv
def get_html_表格(数据):
s=”“”
标题
\n“
对于数据中的行:
s+=''
对于计数器,枚举(行)中的单元格:
s+=r'{}'。格式(单元格)
s+='\n'
s+=“”“
"""
返回s
将open('testoutput.html','rb')作为旧的html:
old_html=old_html.read()
打开('random.csv')作为ifile:
数据=[]
对于计数器,枚举(csv.reader(ifile))中的行:
如果计数器!=0:
datatoapp=[行[0],行[1],行[2],行[3]]
data.append(datatoapp)
html\U数据=获取html\U表格(数据)
如果是旧的_html!=html_数据:
如果是html_数据:
以open('testoutput.html',“wb”)作为文件:
ofile.write(html_数据)
希望这有帮助:)

-Hyflex

我试图比较整个文件,而不仅仅是一行。
old_html = old_html.read()
import csv

def get_html_table(data):
    s = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
    <body>
        <table id="gradient-style">
            <tbody>\n"""
    for row in data:
        s += '        <tr>'
        for counter, cell in enumerate(row):
            s += r'<td>{}</td>'.format(cell)
        s += '</tr>\n'
    s += """            </tbody>
        </table>
    </body>
</html>"""
    return s

with open('testoutput.html', 'rb') as old_html:
    old_html = old_html.read()

with open('random.csv') as ifile:
    data = []

    for counter, row in enumerate(csv.reader(ifile)):
        if counter != 0:
            datatoapp = [row[0], row[1], row[2], row[3]]
            data.append(datatoapp)    

    html_data = get_html_table(data)

if old_html != html_data:
    if html_data:
        with open('testoutput.html', "wb") as ofile:
            ofile.write(html_data)