在Python中递归地在目录内创建不同大小的文件

时间:2016-11-22 11:00:51

标签: 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)

3 个答案:

答案 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)

答案 1 :(得分:0)

您以错误的方式使用os.walk:使用os.walk实际上您不会更改您正在处理的目录。您的脚本将仅在您运行它的目录中创建文件。我不确切知道uuid.uuid4()到底做了什么,但可能解决方案可能是用

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

您需要[0]因为os.walk返回一个列表,其中第一个参数是命令所在的当前目录" walking"。尝试打印os.walk的输出一次以获得它的感觉。

修改

在@LutzHorn发表评论后,将+替换为os.path.join

答案 2 :(得分:0)

试试这个

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)