我要做的是让我的程序从目录中随机选择一个文件夹,并读取其中的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']]