在python中读取和写入文件,将不同文件中的字符相互比较

时间:2015-12-11 04:28:45

标签: python

我想在python中读取2个文件,并根据这些文件创建另一个文件。第一个文件包含常规英语(ex“hello”),第二个文件包含“密文”(2 5个字母随机字符串Ex“aiwld”和“pqmcx”)我想将字母'h'与第一个字母匹配在密文中并将其存储在第三个文件(我们创建的文件)中

def cipher():
    file = english.txt
    file2 = secret.txt
    file3 = cipher.txt

    outputFile = open(file, 'r')
    outputFile = open(file2, 'r')

所以我打开,读取文件和文件2,我想将english.txt中的第一个字母与secret.txt中的第一个字母匹配,然后将该字母写入cipher.txt文件。我完全迷失在哪里开始,任何帮助都会很棒。

我是否需要打开这两个文件,从两者中读取,以某种方式比较然后写入文件? 我想我真的不确定如何将每个文件中的单个字母与不同文件中的其他单个字母进行比较。

我想我会想要像设置english.txt [0] == secret.txt [0]之类的东西,但我不太确定。

2 个答案:

答案 0 :(得分:1)

你在这里看到的关键是如何逐个字符地迭代一个文件(而不是逐行逐行)。

最简单的解决方案是将两个文件完全读入内存并一起迭代。这可以通过file.read()调用和zip()内置来完成。这会受到影响,因为大文件会导致内存不足。

写出结果只是一个正常的file.write()电话。

例如:

with open('plaintext.text') as ptf:
    plaintext = ptf.read()
with open('key.txt') as keyf:
    key = keyf.read()

with open('output.txt') as f:
    for plaintext_char, key_char in zip(plaintext, key):
        # Do something to combine the characters
        f.write(new_char)

答案 1 :(得分:0)

所以这可能过于复杂但

def cipher(file1 = 'english.txt',
       file2 = 'secret.txt',
       file3 = 'cipher.txt'):
fh1 = open(file1, 'r') # open the files
fh2 = open(file2, 'r')
fh3 = open(file3, 'w+') # write this file if it doesn't exist
ls1 = list() # initiate lists
ls2 = list()
for line in fh1: # add the charecters to the list
    for char in line:
        ls1.append(char)
for line in fh2:
    for char in line:
        ls2.append(char)
if ' ' in ls1: # remove blank spaces
    ls1.remove(' ')
if ' ' in ls2:
    ls2.remove(' ')

    print ls1, ls2

for i in range(len(ls1)): # traverse through the list and write things! :)
    fh3.write(ls1[i] + ' ' + ls2[i] + '\n')