我正在创建一个Python脚本,它应该在每次生成新字符串时创建一个新文件(每次执行脚本时,它都会将字符串打印到文件中),并且还将这个随机字符串与一个字符串进行比较文本如下:这是一个字符串
,它位于另一个已创建的文件上。
例如,字符串 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
如何完成类似于第一个版本的操作,但将字符串与第二个版本进行比较?
解决方案,您的“w”只能写入文件,因此您必须将其打开为“r”来读取它。
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!')
我是一名优秀的程序员,十分优秀!