我还有一个问题。我以为我明白我在这个任务中做了什么,但显然不是。我们得到了两个 TXT 文件,我们应该定义一个函数,它需要三个参数,它们都是 TXT 文件。第一个文件看起来是这样的。
hello thank you (etc.)
而第二个文件
hola gracias (等)
我们应该定义这个函数,使这两个文件组成一个新的文件,就像这样。
hello: hola thank you: gracias (etc.)
当第一个文件和第二个文件中的项目数量不一样时,我们应该中断函数并返回一个错误。这一部分似乎很好用,我的程序也创建了一个新的TXT-文件,但它总是空的。自己看看吧。
def create_dictionary(file1, file2, newfile):
with open(file1, encoding='utf-8') as fobj_1:
with open(file2, encoding='utf-8') as fobj_2:
a = fobj_1.readlines()
b = fobj_2.readlines()
if len(a) != len(b):
return "The input files are not compatible."
else:
with open(newfile, 'w', encoding='utf-8') as fobj_new:
for line1 in fobj_1:
out1 = line1.rstrip()
for line2 in fobj_2:
out2 = line2.rstrip()
fobj_new.write(out1 + ":" + out2 + "\n")
return "Successfully created file."
对于两个不匹配的文件,程序运行得很好 但是 "els: "条件会创建一个空文件。我在这里遗漏了什么非常明显的东西?
在输入文件上循环会耗尽它们的数据。试图 read
又需要你倒带,或者关闭并重新打开文件。但你已经在内存中拥有了数据,在变量的 a
和 b
;在它们上面循环。
for ind in len(a):
first = a[ind].strip()
second = b[ind].strip()
out1.write(f'{first}:{second}\n')
也请注意如何有一个单一的循环;你的尝试将写下第一个元素在 a
后面的每一个元素 b
那么,第二要素 a
后面的每一项内容都是 b
、等。