<p>我使用csv示例而不是excel文件,但如果需要,可以为此目的进行修改</p>
<p>对于输入文件:</p>
<pre><code>Name,Tutor Group
A,1
B,1
C,1
D,2
E,2
</code></pre>
<ul>
<li>获取py文件的当前工作目录,并使用pandas读取文件</li>
</ul>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
import os
dirname = os.path.dirname(__file__)
file = f"{dirname}/input.csv"
df = pd.read_csv(file, sep=",")
</code></pre>
<ul>
<li>然后获取每组的人员列表</li>
</ul>
<pre class="lang-py prettyprint-override"><code>group_person_dict = df.groupby("Tutor Group")["Name"].apply(list).to_dict()
# {
# "1": ["A", "B", "C"],
# "2": ["D","E"]
# }
</code></pre>
<ul>
<li>定义常量子文件夹集</li>
<li>迭代字典,生成路径字符串,如果不存在,则创建</li>
</ul>
<pre class="lang-py prettyprint-override"><code># define dub folders
sub_folder_set = {
"AoW",
"CSP",
"Folder A",
"Folder B",
"Folder C",
"Folder D",
"Folder F",
"Folder E",
}
for group, people in group_person_dict.items():
g = str(group)
for p in people:
# obtain name+group concatanated string
folder_name = f"TutorGroup={g}-Person={p}"
# build main directory path, create if not exists
dir_path = os.path.join(dirname, folder_name)
if not os.path.exists(dir_path):
os.mkdir(dir_path)
# iterate ovr subfolders
for sbf in sub_folder_set:
# obtain sub directory path, create if not exists
subdir_path = os.path.join(dir_path, sbf)
if not os.path.exists(subdir_path):
os.mkdir(subdir_path)
</code></pre>
<p>输出:
<a href="https://i.stack.imgur.com/8bixg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/8bixg.png" alt="enter image description here"/></a></p>