我创建了一个python脚本,每次生成一个新字符串时都会创建一个新文件(每次执行脚本时都会将字符串输出到文件中),并将该随机字符串与一个字符串进行比较。是一个类似于THIS IS A STRING
的文本,它位于另一个已创建的文件中。
例如,字符串THIS IS A STRING
位于名为file.dat
的文件中,随机生成的字符串应写入文件,在本例中我将其称为newfile.txt
。
但是,我有这段代码:
import string
import random
file = open('file.dat', 'r')
file=file.read()
print file
def id_generator(size=28, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
file = open("newfile.txt", "w")
file.write(id_generator())
file.close()
此代码只读取file.dat
存档,将其打印到控制台,然后生成随机字符串并将其存储在名为newfile.txt
的文件中,但它不会比较任何内容,因此为了实现这一点,我已经修改了这样的代码:
import string
import random
file = open('bullshit.dat', 'r')
file=file.read()
print file
def id_generator(size=28, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
with open("newfile.txt", "r") as f: stored = f.readline()
if stored == id_generator():
print('success!')
现在,我的问题是,这段代码只是读取已经创建的文件,newfile.txt
,我需要创建一个新的文件,就像之前的代码一样,但比较字符串。
我尝试修改最后三行:
with open("newfile.txt", "w") as f: stored = f.readline()
if stored == id_generator():
print('success!')
但它让我失望:
Traceback (most recent call last):
File "string2.py", line 20, in <module>
with open("newfile.txt", "w") as f: stored = f.readline()
IOError: File not open for reading
如何完成第一个版本的内容,但将字符串作为第二个版本进行比较?
答案 0 :(得分:1)
你有解决方案&#34; w&#34;只能写入文件,所以你必须打开它作为&#34; r&#34;读它。
import string
import random
file = open('test.dat', 'r')
file=file.read()
print file
def id_generator(size=28, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
with open("newfile.txt", "r") as f: stored = f.readline()
if stored == id_generator():
print('success!')