【问题标题】:How to open a random file from a directory in python?如何从python目录中打开一个随机文件?
【发布时间】:2019-06-04 05:09:14
【问题描述】:

我想从给定目录打开一个随机文件。 我试过这个:

import os, random
random.choice(os.listdir("C:\\"))

但它不起作用。 另一方面,我尝试了这个:

import os, random

random.choice([x for x in os.listdir("C:\\") if os.path.isfile(os.path.join("C:\\", x))])

它有效,但它只列出目录中的文件而不启动它们。如何启动这些文件?

【问题讨论】:

  • “启动”文件是什么意思?
  • 您能否更具体地了解“开始”的含义?例如在记事本中打开一个文本文件?运行批处理文件?用python打开文件,然后对内容做点什么?
  • 回溯(最近一次调用最后):文件“”,第 2 行,在 文件“C:\Users\FREDRICK\AppData\Local\Programs\Python\Python36\lib \encodings\cp1252.py",第 23 行,解码返回 codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 431: character maps to >>> 我得到了这个:^

标签: python


【解决方案1】:

您的代码将获取随机文件的文件名,但您应该打开该文件以查看其内容。经过cmets部分的讨论,文件格式为mp3,可以使用webbrowser模块播放。

import os, random
import webbrowser
basedir = "C:\\"

file = random.choice([x for x in os.listdir(basedir) if os.path.isfile(os.path.join(basedir, x))])

print("Playing file {}...".format(file))
webbrowser.open(os.path.join(basedir, file))

【讨论】:

  • 我得到了这个:Traceback(最近一次调用最后):文件“”,第 2 行,在 文件“C:\Users\FREDRICK\AppData\Local\Programs\Python \Python36\lib\encodings\cp1252.py",第 23 行,在解码中返回 codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 431: character映射到 >>>
  • 此错误将根据文件中包含的数据类型出现。由于它是随机选择,如果文件不包含无法解码的特殊字符,您将能够打开文件(并查看数据内容)。如果文件包含无法解码的字符,那么您将不得不查看文件中的数据。除非我们知道数据本身,否则无法调试。
  • 它们只是 mp3 文件。
  • 我有这个代码,我在网上找到的,很简单,但我把它弄丢了。它只是从指定文件夹中打开随机文件
  • 您要播放 mp3 文件吗?您可能想在这篇文章中探索选项:stackoverflow.com/questions/20021457/playing-mp3-song-on-python
猜你喜欢
  • 2015-10-03
  • 2021-12-07
  • 2017-04-21
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 2013-10-24
相关资源
最近更新 更多