我有一个简单的脚本来生成随机的空文本文件,我将其用作另一个项目的沙箱数据。对于所有意图和目的,它可以工作,但我注意到,如果选择大于1500的值,则生成的所需文件数和实际计数有时不匹配。
我的代码如下:
import os
import random
path = "data/"
def makeFiles():
count = int(input("How many to make?\n"))
for x in range(0,count):
num = random.randint(10000,999999)
name = path+str(num)+".txt"
f = open(name,"w")
f.write(str(x))
f.close()
print(x)
makeFiles()
我在Linux Mint上使用Python 3.6(基本上是Ubuntu 16.04)。我觉得如果我拖延时间睡觉它可以解决问题,但事实并非如此。制作2500个文件时,此时会定期生成2497个文件。任何意见,将不胜感激。谢谢!
答案 0 :(得分:3)
为避免使用random.randint()
重复数字,您可以使用random.sample()
。使用来自@cᴏʟᴅsᴘᴇᴇᴅ的所有其他建议(和被盗代码)。
更新 @cᴏʟᴅsᴘᴇᴇᴅ删除了他的答案,所以这是他的其他建议:
os.path.join
with...as
上下文管理器来管理文件I / O E.g:
for x, num in enumerate(random.sample(range(10000, 1000000), count)):
name = os.path.join(path, "{}.txt".format(num))
with open(name, "w") as f:
f.write(str(x))