我是python的新手,并且在编程方面非常沮丧。 我有一项任务要完成。我需要加载file.txt(每行有一个字母),然后创建另一个包含所有组合的file2.txt。这是我设法启动的代码
from itertools import product
def main():
list = ('A', 'B', 'C', 'D')
for word in product(list, repeat=2):
print (''.join(word))
if __name__ == "__main__": main()
它给了我这个
AA
AB
AC
AD
BA
BB
BC
BD
CA
CB
CC
CD
DA
DB
DC
DD
这个不起作用。
from itertools import product
def main():
list = open('recnik2.txt', 'a') #I gess python cant read like this
for word in product(list, repeat=2):
print (''.join(word))
if __name__ == "__main__": main()
它给了我这个错误
Traceback (most recent call last):
File "C:\Users\"Ideletedthis"\product.py", line 11, in <module>
if __name__ == "__main__": main()
File "C:\Users\"Ideletedthis"\product.py", line 7, in main
for word in product(list, repeat=2):
io.UnsupportedOperation: not readable
Any1可以解释原因,也许可以提供更好的解决方案
答案 0 :(得分:0)
操作系统在处理文件时为您提供了多种选择。一种选择是阅读内容。另一个是写信给它。您通常必须指定要执行的每个选项。这是一种安全机制。
在您的代码中,您要求操作系统通过Python“追加”到recnik2.txt
文件。追加是一种将内容写入文件的方法,从文件的末尾开始。但是,由于您试图从仅使用“写入”访问权限打开的文件中读取,操作系统会告诉您该文件“不可读”。
尝试使用open('recnik2.txt', 'r')
打开“阅读”权限。 Read this如果您对其他选项感到好奇。
答案 1 :(得分:0)
我设法纠正了&#34;阅读&#34;模式并使用&#34; write&#34;创建另一个文件。 但我越了解我遇到的问题就越多。这是代码
from itertools import product
def main():
infile = open('recnik2.txt', 'r')
outfile = open('recnik3.txt', 'w')
for word in product(infile, repeat=2):
print (''.join(word), file=outfile)
infile.close()
outfile.close()
if __name__ == "__main__": main()
它给了这个。
A
A
A
B
A
C
A
D
B
A
B
B
B
C
B
D
C
A
C
B
C
C
C
D
DA
DB
DC
DD
我知道print()必须打印可以使用end =&#39;&#39;删除的空行。 但这是组合之间的界限。当它跳到另一个字母时,那条线就不存在了。看看
A
D
B
A
B和D doenst有空间,所以如果我把end =&#39;&#39;它会放置
A
DB
A
令人困惑。为什么它会分开组合?为什么AA并不紧挨着,DD就像我需要的那样。 很抱歉,如果我这是noob的问题,但无法找到解释此问题的教程。 Python指南有很多,但没有详细信息