2017-01-22 67 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