【发布时间】:2013-07-06 04:52:51
【问题描述】:
我有一个用 Python 编写的代码。它基于变量“i”生成两个文件。现在,我需要将这两个生成的文件之一与密钥文件进行比较,以获得正确的 'i' 值。
我正在使用 FOR 循环来测试 'i' 的一系列值,并使用 filecmp.cmp 将生成的文件之一与密钥文件进行比较。在我找到匹配项的那一刻,这意味着我有正确的 'i' 值。
下面是一段代码:
for i in range(100,0,-1):
....
with open("file1", "w") as p, open("file2", "w") as q:
# generate data based on the value of i and write it to the files
if(filecmp.cmp("file1", "keyfile"))
print "%d is the correct value of it" % i
break
应该这样工作:
- 测试 'i' 的值从 100 到 0 逐一递减。
- file1 和 file2 是使用基于“i”值的代码生成的。
- 现在,我将file1 与密钥文件进行比较。如果它们具有相同的内容,我会找到正确的键并打破 FOR 循环。
我已将 filecmp.cmp 语句放在 if 语句中,因为如果两个文件相等,它会返回一个布尔值 True。但是,当我运行代码时,此行会引发错误。
另外,这是正确的做法吗?每次执行 FOR 循环,都会生成两个文件,file1 和 file2。 With 语句将在循环后关闭这两个文件。但是在下一次循环运行中,这两个文件会被新内容覆盖吗?
谢谢。
【问题讨论】:
-
真的要生成这两个文件吗?难道你不能只保存两个变量中的内容并比较它们,而不是写入磁盘,然后重新打开并比较?
-
请描述“filecmp.cmp”行抛出的错误。
标签: python