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