如何在python中随机选择一个文件

时间:2017-01-13 03:05:23

标签: python python-2.7

对于python来说,我是中间人,但是当谈到模块时,我很挣扎。我正在处理一个项目,我试图将变量分配给当前目录中的随机目录或文件(目录中的任何随机内容)。我希望它只是选择该目录中的任何随机内容,然后将其分配给变量。

产品最终应该将变量分配给工作目录中的随机对象。谢谢。

file = (any random file in the directory)

编辑:这也有效

_files = os.listdir('.')
number = random.randint(0, len(_files) - 1)
file_ = _files[number]

谢谢大家的帮助:)。

4 个答案:

答案 0 :(得分:4)

您可以使用

import random
import os
# random.choice selects random element
# os.listdir lists in current directory
filename=""
# filter out directories
while not os.path.isfile(filename):
    filename=random.choice(os.listdir(directory_path))
with open(filename,'r') as file_obj:
    # do stuff with file

答案 1 :(得分:2)

另一种选择是使用通配,特别是如果你想从一些文件中选择,而不是所有文件:

import random, glob
pattern = "*" # (or "*.*")
filename = random.choice(glob.glob(pattern))

答案 2 :(得分:1)

_files = os.listdir('.')
number = random.randint(0, len(_files) - 1)
file_ = _files[number]

逐行顺序:

  1. 它将目录中的所有文件放入列表
  2. 选择介于0和目录长度之间的随机数 - 1
  3. 将_file分配给随机文件

答案 3 :(得分:0)

这里是从多个子目录的目录中打印并打开单​​个随机文件的选项。

import numpy as np
import os

file_list = [""]

for root, dirs, files in os.walk(r"E:\Directory_with_sub_directories", topdown=False):
    for name in files:
        file_list.append(os.path.join(root, name))

the_random_file = file_list[np.random.choice(len(file_list))]
print(the_random_file)
os.startfile(the_random_file)