gpt4 book ai didi

Python 从一个文件中创建多个文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:17:13 25 4
gpt4 key购买 nike

我是 Pyhton 初学者,目前正在尝试编写一个小脚本,将文件的行拆分为训练集和测试集。该代码为每个 FOLD 生成两个文件(此处为 5*2),一个训练文件和一个测试文件。第一个训练/测试文件(即第一次运行循环)生成无问题,其他文件也创建但它们是空的。您可以在下面找到我的代码片段:

for shuffledFile in os.listdir(INPUT_DIR_S):
with open(INPUT_DIR_S + shuffledFile, 'r') as inputFile:
fold = 1
pos = 0
while fold <= FOLD:
content = inputFile.readlines()
step = len(content)/FOLD
testSet = []
trainSet = []
for element in content[pos:step*fold]:
testSet.append(element)
content.remove(element)
with open(create_folders(shuffledFile) + "/" + os.path.splitext(shuffledFile)[0] + "_TEST" + str(fold), 'w') as testFile:
for result_line in testSet:
testFile.write(str(result_line))
for element in content:
trainSet.append(element)
with open(create_folders(shuffledFile) + "/" + os.path.splitext(shuffledFile)[0] + "_TRAIN" + str(fold), 'w') as trainFile:
for result_line in trainSet:
trainFile.write(str(result_line))
fold += 1
pos += step

我也用了调试器,发现content有问题,因为它在第一次迭代后是空的。但我不知道为什么会发生这种情况以及我实际上必须做些什么来解决它。对于熟悉 Python 的人来说,这可能是一个非常基本和简单的问题,如果有人能向我解释实际问题是什么,我将不胜感激。感谢大家的时间和努力。

最佳答案

文件对象的行为类似于文件中行的迭代器。当您在文件对象上调用 readlines() 时,迭代器中的所有项目都会被消耗掉。对同一文件对象的 readlines() 的后续调用将返回一个空列表。

因此,如果您需要多次遍历文件的行,则需要重置迭代器或将第一次调用 readlines() 返回的行列表存储在一个单独的变量并根据需要对其进行多次迭代。

关于Python 从一个文件中创建多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com