【发布时间】:2016-10-31 02:10:39
【问题描述】:
我正在创建一个 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
我怎样才能完成类似于第一个版本的操作,但将字符串与第二个版本进行比较?
【问题讨论】:
-
你必须先打开文件
-
在使用 open 调用时,您使用的是 w 标志,这意味着可以写入...参见文档 ..docs.python.org/2/library/functions.html#open
-
谢谢,我知道,但我想做的是每次运行脚本时都创建文件,这样它实际上可以是随机的,如果我阅读它,那么它就是一个文件以前以某种方式创建的,所以随机代码没有任何意义,但我不知道我的方法是否正确。