Select 目录中的随机文件夹(不是文件)

Select random folder from directory (not file)

我想做的是让我的程序从目录中随机选择一个文件夹并读取其中的 slots.csv 文件。所有文件夹都有 slots.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'

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

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

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

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']]