2017-06-05 260 views
-1

我有一個文件夾中的一個百萬個文件,我想在另一個文件夾從他們只在百文件複製:對我來說如何將一百個文件從文件夾複製到文件夾?

import os 
import shutil 

dir_src = ("/Big_Folder") 
dir_dst = ("/Small_Folder") 

for filename in os.listdir(dir_src): 
    shutil.copy(dir_src + filename, dir_dst) 
    print(filename) 

這個腳本複製所有文件,如何只複製100000的文件嗎?

+0

而到底是哪100個文件,你要複製?任何100? 100歲最老? 前100位按文件名的字母順序?還有別的嗎? –

+0

我不在乎哪一個,我只需要一百個文件來進行我的測試,例如第一個文件 – Sony

回答

2

簡單的切片要遍歷列表:

for filename in os.listdir(dir_src)[:100]: 
    ... 
0

通過對列表進行索引可以讓您對第n個(或本例中爲i)的迭代執行操作。

import os 
import shutil 

dir_src = ("/Big_Folder") 
dir_dst = ("/Small_Folder") 

dirList = os.listdir(dir_src) 
for i in range(len(dirList)): 
    if i == 100: 
    break 
    shutil.copy(dir_src + dirList[i], dir_dst) 
    print(filename) 
+1

它可以工作,但在Python中不是很習慣:我們幾乎從不使用'for in in len(something)',相反,我們使用'for i,enumerate(something)'中的項目'或者只是遍歷'something'。 –

+0

@Paulo Scardine你的方式看起來更好。如果速度是第一優先級,我們不會使用python,但是我會盡可能地寫更快的代碼。 '因爲我在範圍內(len(...))'要快得多(除非我錯了)。我在帶有「pass」的10,000元素數組上使用iPython'%timeit'來比較迭代時間。對於給定的硬件,py3.6的3個循環時間中的最好時間是'範圍(len(...))346uS'和枚舉方法的1130uS。也許這是值得一個新的職位,以更好地比較兩者。 – 16num

相關問題