2017-04-05 57 views
0

我在一個文件夾中有30,000個文件。從0開始到30000。我想從頭至尾以10的間隔讀取結束編號高於5000的時間間隔。我已經創建了下面的代碼,生成兩個不同範圍的數字文件名

​​

此代碼讀取我的文件05000。但我需要它讀取間隔10時endfile大於5000。因此,必須有兩個條件,一個用於endfile小於或等於5000它將讀取05000,另一個用於endfile高於5000,其中程序的讀取間隔爲10。任何想法如何寫在python中?

+1

你的意思是像'在10個文件塊「或每10個文件。後者可以通過在for循環中添加第三個參數(步驟)輕鬆解決。 '如果endfile> = 500:對於範圍內的k(startFile,endFile + 1,10)' – umutto

+0

這不是關於生成字符串的問題嗎? –

+0

@umutto每10個文件。因爲30000個文件包含數據加載,我需要該程序來轉義某個文件。因爲我可以修改endFile,所以最好同時具有一個endfile <= 5000和一個endFile> 5000 –

回答

0

通過使用os.listdir可以找到目錄中的文件數量;

>>> import os 
>>> n_files = len(os.listdir(read_path)) 
>>> n_files 
74 

一旦你這樣做,你可以選擇你的步長和處理給予一步參數範圍內每10個文件;

>>> startFile = 0 
>>> endFile = 5000 

>>> step = 1 if n_files <= endFile else 10 

>>> for k in range(startFile, endFile + 1, step): 
>>>  execfile(read_path + str(k) + ".py") 

僅供參考range(start,stop,step)參數。步驟是索引增量大小,如果將其設置爲n,它會選取第個第n個元素。

>>> [i for i in range(0, 100, 10)] 
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90] 
+0

而不是引入n_file,我可以直接寫入,如果endFile <= 5000 else 10 (範圍內的startFile,endFile + 1,step),則step = 1: execfile(read_path + str(k)+「.py」) –

+0

@TanvirHossain是的,你可以,我用n_files更容易閱讀。但是在你的評論中,'endfile <= 5000'將始終爲真,因爲你初始化它。你想用'len(os.listdir(read_path))'替換'n_files'嗎? – umutto

+0

實際上我不需要n_file,因爲我可以根據需要定義數字。它可以是100或1000或10000.我只需要在這裏介紹兩個不同情況下的步驟,以減少模擬時間。 –