我有一个简单的脚本来生成随机的基本为空的文本文件,我将其用作另一个项目的沙箱数据。对于所有意图和目的,它都有效,但我注意到,如果选择了大于 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(本质上是 Ubuntu 16.04)上使用 Python 3.6。我觉得如果我延迟 time.sleep 可能会解决问题,但事实并非如此。当制作2500个文件时,此时会按常规生成2497个。任何意见,将不胜感激。谢谢!
最佳答案
要避免使用 random.randint()
重复数字,您可以使用 random.sample()
。来自@cᴏʟᴅsᴘᴇᴇᴅ的所有其他建议(和被盗代码)。
更新 @cᴏʟᴅsᴘᴇᴇᴅ 删除了他的回答所以这是他的其他建议:
- 加入路径时使用
os.path.join
- 使用
with...as
上下文管理器来管理文件 I/O
例如:
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))
关于Python 文件计数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46082501/