2017-01-22 72 views
-1

对于我的循环来实现的,我需要给作为文件的名称“我的迭代次数”,例如,我们的目标是节省:如何给文件命名?

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

你的文件名是否有顺序给他们? – ANVGJSENGRDG

回答

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其他地方。

0

如果你刚刚在命名方案“0.npy”,“1.npy”,一直到“n-1.npy”之后的100个空白文件,一个简单的for循环会做的工作(不需要numpy的!):

n = 100 
for i in range(n): 
    open(str(i) + ".npy", 'a').close() 

这个循环运行的n次迭代和吐出空文件对应于当前迭代

+1

@roganjosh呃早上太早了haha – disposedtrolley

1

名我不是100%确定你的问题是,但据我所知,你只需要一些字符串格式的文件名。

所以,你想,说100个文件,每个迭代后创建一个。要做到这一点最简单的方法很可能是使用类似以下内容:

for line, a in enumerate(): 
    #do work 
    filename = "C:\\SaveDir\\OutputFile{0}.txt".format(line) 
    np.save(filename, Result) 

这不会是100%准确的送到您的需求,但希望这会给你的想法。

+0

@roganjosh我不太确定那条线应该是什么。如果是行号,那么是的,你是对的,你可以完全摆脱我。 – Jarak

+0

@roganjosh我们没有真正获得足够的信息来说出它是什么。它可能是保存来自要保存的给定行的文本信息的字符串。 – Jarak

+1

@roganjosh啊,是的,你说得对。不知何故,我没有运行过内置的枚举 - 我假设它是一个自定义函数。我相应地更新了我的答案(在这一点上,它几乎与Mike的相同)。 – Jarak

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是否喜欢它们。

+0

我需要保留我的文件序列,并且我想保留所有我会得到的文件,因为这是组织结果最重要的事情。 – nani92