如何将Python结果保存在5个txt文件中

2024-05-21 00:06:32 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我想保存在5 txt文件的结果。我的代码结果是

14R2
14Rt
14R8
1402
140t
1408
14a2
14at
14a8
1dR2

我想写第一个文件

14R2
14Rt

第二个

14R8
1402

以此类推到5。 这是我的代码为1文件,他们的工作完美。你知道吗

import itertools
f = open("first_file.txt", "w")
somelists = [
['1','K','5'],
['4','d','1'],
['R','0','a'],
['2','t','8'],
    ]
for element in itertools.islice(itertools.product(*somelists),1 , 10):
    print(''.join(element), file=f)
f.close()

我从一个超级用户那里得到建议,凯文给了我这个代码

filenames = ["my_file_{}.txt".format(i) for i in range(5)]

for filename in filenames:
with open(filename, "w") as file:
    file.write(some_stuff())

但是当我尝试实现时,我得到了一个错误“解析时意外的EOF”

这就是我试过的

import itertools
filenames = ["my_file_{}.txt".format(i) for i in range(5)]
for filename in filenames:
    with open(filename, "w") as file:
            somelists = [

['1','K','5'],
['4','d','1'],
['R','0','a'],
['2','t','8'],
    ]



for element in itertools.islice(itertools.product(*somelists),1 , 5):
     file.write(''.join(element())

有人能帮我吗?你知道吗


Tags: 文件代码inimporttxtforelementopen
2条回答

缺少右括号:

file.write(''.join(element())

应该是

file.write(''.join(element()))

解析时出现意外的EOF表示代码块尚未完成。你知道吗

除了Andrew T指出的问题之外,如果您不再位于打开文件的with块中,则不能调用file.write。该文件在with块的末尾自动关闭,因此得到ValueError: I/O operation on closed file。你知道吗

所以应该将write调用移到with块中。当我们移动东西时,将somelists定义移到for filename in filenames:循环之外,因为没有必要多次分配它。只调用product一次,并使用next从中提取项目也会更有效。你知道吗

import itertools

num_files = 5
elements_per_file = 2


somelists = [
    ['1','K','5'],
    ['4','d','1'],
    ['R','0','a'],
    ['2','t','8'],
]

items = ("".join(element) for element in itertools.product(*somelists))

for i in range(num_files):
    filename = "my_file_{}.txt".format(i)
    with open(filename, "w") as file:
        for j in range(elements_per_file):
            file.write(next(items) + "\n")

相关问题 更多 >