从目录(而不是文件)中随机选择文件夹



我要做的是让我的程序从目录中随机选择一个文件夹,并读取其中的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()方法在选择路径分隔符时会考虑操作系统。这可能不是你的问题,但它会让你的代码更干净。

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

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

最新更新