Python文件计数不匹配

时间:2017-09-06 18:57:58

标签: python linux operating-system

我有一个简单的脚本来生成随机的空文本文件,我将其用作另一个项目的沙箱数据。对于所有意图和目的,它可以工作,但我注意到,如果选择大于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个文件。任何意见,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

为避免使用random.randint()重复数字,您可以使用random.sample()。使用来自@cᴏʟᴅsᴘᴇᴇᴅ的所有其他建议(和被盗代码)。

更新 @cᴏʟᴅsᴘᴇᴇᴅ删除了他的答案,所以这是他的其他建议:

  1. 加入路径时使用os.path.join
  2. 使用with...as上下文管理器来管理文件I / O
  3. 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))