对于我循环中的每次迭代,我需要将'我的迭代次数'作为文件的名称,例如,目标是保存:
my first iteration in the first file.
my second iteration in the second file.
....
我使用的是库numpy,但是我的代码没有给我我需要的解决方案,实际上我的实际代码要求我在每次迭代后输入文件的名称,如果我有6则很容易或者7次迭代,但是在我有100次迭代的情况下,它没有意义:
for line, a in enumerate(Plaintxt_file):
#instruction
#result
fileName = raw_input()
if(fileName!='end'):
fileName = r'C:\\Users\\My_resul\\Win_My_Scripts\\'+fileName
np.save(fileName+'.npy',Result)
ser.close()
如果你能帮助我,我将非常感激。
答案 0 :(得分:3)
从行号创建您的文件名:
for line, a in enumerate(Plaintxt_file):
fileName = r'C:\Users\My_resul\Win_My_Scripts\file_{}.npy'.format(line)
np.save(fileName, Result)
首先是文件名file_0.npy
。
如果您想以1
开头,请在enumerate
中指定起始索引:
for line, a in enumerate(Plaintxt_file, 1):
当然,这假设您不需要line
从其他任何地方开始0
。
答案 1 :(得分:1)
我不能100%确定您的问题是什么,但据我所知,您只需要对文件名进行一些字符串格式化。
所以,你想要,比如说100个文件,每个文件都是在迭代后创建的。最简单的方法可能是使用以下内容:
for line, a in enumerate():
#do work
filename = "C:\\SaveDir\\OutputFile{0}.txt".format(line)
np.save(filename, Result)
根据您的需求,它不会100%准确,但希望这会给您提供这个想法。
答案 2 :(得分:0)
如果您刚刚使用命名方案为“0.npy”,“1.npy”的100个空白文件,一直到“n-1.npy”,一个简单的for循环就可以了工作(不需要numpy!):
n = 100
for i in range(n):
open(str(i) + ".npy", 'a').close()
此循环运行n次迭代,并使用与当前迭代对应的文件名吐出空文件
答案 3 :(得分:0)
如果您不关心文件的顺序,并且您不希望多次循环运行的文件相互覆盖,则可以使用随机unique IDs。
from uuid import uuid4
# ...
for a in Plaintxt_file:
fileName = 'C:\\Users\\My_resul\\Win_My_Scripts\\file_{}.npy'.format(uuid4())
np.save(fileName, Result)
旁注:
不要一起使用原始字符串和转义反斜杠。
它是r"C:\path"
或"C:\\path"
- 除非您想在路径中使用双反斜杠。我不知道Windows是否喜欢它们。