我试图编写一个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 :(得分: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)