2016-11-22 52 views
0

我正在嘗試編寫一個python腳本,它將遞歸遍歷一個目錄並在其中創建不同大小的文件。到目前爲止,我已經到了這裏。那麼我沒有寫任何機制來創建不同大小的文件,但我需要它。我非常清楚我寫的文件創建邏輯有問題。任何幫助是非常可觀的。在Python中遞歸地在目錄中創建不同大小的文件

我的代碼:

#!/usr/bin/python 

import os 
import uuid 

for dirs in os.walk('/home/zarvis'): 
    print dirs 
    filename = str(uuid.uuid4()) 
    size = 1000000 
    with open(filename, "wb") as f: 
    f.write(" " * size) 
+0

http://stackoverflow.com/questions/2257441/random-string-使用大寫字母和數字生成python在這裏您可以找到如何生成隨機字符串。通過隨機化範圍,您可以創建隨機文件。 https://docs.python.org/2/library/random.html我想你可以用這個類隨機化你想要的東西。 –

+0

隨機化它正在工作,但我無法在所有目錄內遞歸地創建文件。問題在那裏。 –

回答

1

不要使用固定size。使用random.randint創建一個隨機大小。使用os.path.join構建文件的完整路徑。

import os 
import uuid 
import random 

for dirs in os.walk("/home/zarvis"): 
    d = dirs[0] 
    filename = str(uuid.uuid4()) 
    size = random.randint(1, 100) 
    with open(os.path.join(d, filename), "w") as f: 
     f.write(" " * size) 
+0

用我的答案讓你的工作不太公平......;) –

+0

最簡單的工作! :) –

+2

這是什麼stackoverflow正在成爲...人們不想學習...只是工作代碼...所以...誰在乎解釋...這只是工作只是複製/粘貼.. 。) –

0

你以錯誤的方式使用os.walk:與os.walk你其實並不改變你正在工作的目錄。您的腳本只會在運行它的目錄中創建文件。我不知道到底是什麼uuid.uuid4()的做法,但可能是一個解決辦法是用

filename = os.path.join(dirs[0], str(uuid.uuid4()) 

更換filename您需要[0]因爲os.walk返回一個列表,其中第一個參數是當前目錄下的命令是「行走」 。嘗試一次打印os.walk的輸出以獲得它的感覺。

編輯:

從@LutzHorn

+0

應該使用'os.path.join'來代替'+'。 – 2016-11-22 11:21:03

+0

請參閱https://docs.python.org/3/library/uuid.html#uuid.uuid4 – 2016-11-22 11:22:41

+0

就在'os.path.join'上 –

0

評論後os.path.join取代了+試試這個

import os,uuid,random 
for root, dirs, files in os.walk("/home/zarvis/"): 
    filename = str(uuid.uuid4()) 
    size = random.randint(1, 1000000) 
    with open(os.path.join(root, filename), "wb") as f: 
     f.write(b" " * size) 
相關問題