python - 如何将目录中的每个项目与另一个目录中的每个项目进行比较?
问题描述
任务是将学生作业 SQL 文件与导师 SQL 文件进行比较。
我编写了两个函数,它们返回一个二维数组(第一个元素是绝对路径,第二个是相对路径)。然后我将比较学生和导师的相对路径,如果这些值相等,则执行 SQL 文件(使用绝对路径查找)
有没有更优雅的实现?
导师目录的文件夹结构:
Homework (folder)
├ 1 (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
├ 2 (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
├ n (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
学生目录的文件夹结构:
├Students Homework (folder)
├Student1(folder)
├ 1 (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
├ 2 (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
├ n (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
├Student2(folder)
├ 1 (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
├ 2 (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
├ n (folder)
| ├ 1.sql
| ├ 2.sql
| └ n.sql
“导师”功能:
def find_mentors_sql(config):
mentors_sql_abs = []
mentors_sql_rel = []
for dirpath, subdirs, files in walk(config["MAIN_DIR"] + '\\Homework'):
mentors_sql_abs.extend(path.join(dirpath, x) for x in files if x.endswith(".sql"))
mentors_sql_rel.extend(path.join(path.basename(dirpath), x) for x in files if x.endswith(".sql"))
mentors_sql = [[0] * 2 for i in range(len(mentors_sql_abs))]
iter = 0
for _ in mentors_sql_abs:
mentors_sql[iter][0] = mentors_sql_abs[iter]
iter += 1
iter1 = 0
for _ in mentors_sql_rel:
mentors_sql[iter1][1] = mentors_sql_rel[iter1]
iter1 += 1
return mentors_sql
“学生”功能(逻辑与上一个类似:
def find_students_sql(config):
students_sql_abs = []
students_sql_rel = []
for dirpath, subdirs, files in walk(config["MAIN_DIR"] + '\\Students Homework'):
students_sql_abs.extend(path.join(dirpath, x) for x in files if x.endswith(".sql"))
students_sql_rel.extend(path.join(path.basename(dirpath), x) for x in files if x.endswith(".sql"))
students_sql = [[0] * 2 for i in range(len(students_sql_abs))]
iter = 0
for _ in students_sql:
students_sql[iter][0] = students_sql_abs[iter]
iter += 1
iter1 = 0
for _ in students_sql:
students_sql[iter1][1] = students_sql_rel[iter1]
iter1 += 1
return students_sql
解决方案
推荐阅读
- c - C中分母的增量
- android - 了解 onWaveFormDataCapture 字节数组格式
- c - 为什么我在 VisualStudio 中收到 C4996 错误,而在 CodeBlocks 中没有收到任何错误?
- reactjs - yarn 网络连接有问题
- python - 计算在 Python 中打开的总行数
- html - Angular 6 应用程序中两个输入位于同一行时的表单验证
- java - 生成固定大小的随机字符串
- amazon-web-services - 无通信 - ec2 实例在不同子网中有两个接口
- r - 删除 R 中的重复组合
- javascript - 如何通过 id Vue 获取对象表单存储