随机字符串生成I / O python

时间:2016-10-31 02:10:40

标签: python string random

我创建了一个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

如何完成第一个版本的内容,但将字符串作为第二个版本进行比较?

1 个答案:

答案 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!')