为什么我不能从目录中获取随机文件?

时间:2018-02-02 03:06:15

标签: python random ms-word docx

我试图从指定的目录中获取一个随机单词文件,但它不返回任何内容这是代码的某些部分。

for filename in glob.glob(os.path.join(path, '*docx')):
    fl = []
    fl.append(filename)
return fl

choice = random.choice(fl)
doc = docx.Document(choice)
print(doc.paragraphs[0].text) # There is a paragraph on the document starting on the first line so problem is not there.

路径没有错。当我没有尝试只获取一个随机文件而不是所有文件时,Eveything工作正常。

  1. 我做错了什么?
  2. 有没有更有效的方法呢?

2 个答案:

答案 0 :(得分:2)

return fl看起来很奇怪。 否则它应该工作。

files = glob.glob(os.path.join(path, '*docx')
choice = random.choice(files) # each time you get a random file out of files.

您不必像通过循环那样创建另一个通过循环运行文件的列表。

答案 1 :(得分:1)

for循环逻辑中,每次获得fl时,您都在初始化filename列表,这使fl值仅包含最后一个文件名(这使得random.choice函数只给你相同的文件名),而是将其重写为,

fl = []
for filename in glob.glob(os.path.join(path, '*docx')):
    fl = fl.append(filename)

虽然在你的情况下不需要循环,但我建议你看看@ kra3回答的问题here