【问题标题】:Select random folder from directory (not file)从目录中选择随机文件夹(不是文件)
【发布时间】:2021-12-30 17:53:58
【问题描述】:

我要做的是让我的程序从目录中随机选择一个文件夹并读取其中的 slots.csv 文件。所有文件夹都有 slot.csv 文件,只是文件夹名称不同。我了解如何使用random.choice(os.listdir("C:\\")),但我似乎无法让它与文件夹一起使用...

import os, random

random_centre = random.choice(os.listdir("Centres" + "\\" + postcode))
df = pandas.read_csv(r"Centres" + "\\" + postcode + "\\" + random_centre + "\\" + "slots.csv")

我不断收到同样的错误,

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'Centres\\31400'

【问题讨论】:

  • 错误是什么?看起来应该可以了。
  • 我看到您在这里提出了很多问题,并且正在努力完成您的这个项目。 ???我不知道您是否阅读过stackoverflow.com/help/how-to-ask,但请尝试向我们展示您正在处理的内容...尝试为我们排除所有猜测...我们将能够为您提供更好的帮助。
  • 我实际上已经在我的其他帖子之一中提到了我的项目。我目前正在建立一个完全自动化的疫苗接种预约计划。我的文件夹使用邮政编码命名。此线程上的这段代码将从与用户邮政编码同义的文件夹中随机选择一个疫苗接种中心。此外,如果我还有其他问题,我会听取您的建议并提供更多关于我正在做什么的详细信息,并将这些问题变成适合构建类似类型程序的人的主题。
  • 嗯,它说它找不到或找不到邮政编码文件夹、31400,甚至找不到 Centers 文件夹。验证两者都存在。

标签: python pandas csv random choice


【解决方案1】:

我没有 Pandas,所以这里有一个使用 Python 的 CSV 模块的模型。

我的第一条建议是使用os.path.join() 来组装您的路径。即使我在 Mac 上,此代码也应该可以在您的 Windows 机器上运行,因为join() 方法在选择路径分隔符时会考虑操作系统。这可能不是您的问题,但它会让您的代码更简洁。

至于随机问题,您的代码看起来应该可以工作:

import csv
import os
import random

postcode = '12345'
base_path = os.path.join('Centres', postcode)
random_centre = random.choice(os.listdir(base_path))
csv_path = os.path.join(base_path, random_centre, 'slots.csv')

with open(csv_path, newline='') as f:
    reader = csv.reader(f)

    print(csv_path)
    print(list(reader))

这是我运行几次后的样子:

% ./main.py
Centres/12345/b/slots.csv
[['Col1', 'Col2'], ['Val1', 'Val2']]

% ./main.py
Centres/12345/a/slots.csv
[['Col1', 'Col2'], ['Val3', 'Val4']]

% ./main.py
Centres/12345/a/slots.csv
[['Col1', 'Col2'], ['Val3', 'Val4']]

% ./main.py
Centres/12345/b/slots.csv
[['Col1', 'Col2'], ['Val1', 'Val2']]

% ./main.py
Centres/12345/a/slots.csv
[['Col1', 'Col2'], ['Val3', 'Val4']]

% ./main.py
Centres/12345/c/slots.csv
[['Col1', 'Col2'], ['Val5', 'Val6']]

【讨论】:

  • 谢谢 Zach,但是,即使添加了 `base_path = os.path.join('Centres', postcode)` 这一行,我仍然一遍又一遍地收到相同的错误。 ` FileNotFoundError: [WinError 3] 系统找不到指定的路径:'Centres\\31400' `
  • 更正:即使使用 base_path = os.path.join('Centres', postcode)random_centre = random.choice(os.listdir(base_path)) 行,我仍然得到同样的错误
  • 好的,把这个错误放在你帖子的最前面。
  • 您确定从正确的目录运行它吗?也许您正在 /home/user/ 中查找文件,而不是实际路径。执行 print(os.getcwd()) 以查看您的真实位置。或者用 os.path.join(os.getcwd(), 'Centres', postcode) 测试
  • 不用担心 - 编码愉快!
猜你喜欢
  • 1970-01-01
  • 2014-07-29
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
相关资源
最近更新 更多