向学生分发文件,事实上是批量拷贝文件。
1. 准备好模板文件
比如实验四用信号量解决进程同步问题,准备好下列模板文件:
# tree os_exp/
os_exp/
├── exp4_sync_pv
│ ├── compile_and_run.sh
│ ├── process_synchronization_pv.c
│ └── semaphore.h
其中,
semaphore.h
,信号量相关操作,如创建、加锁、解锁process_synchronization_pv.c
,用信号量解决进程同步compile_and_run.sh
,编译程序并运行可执行程序
#!/usr/bin/env bash
gcc process_synchronization_pv.c -o process_synchronization_pv
./process_synchronization_pv
2. 向学生分发文件
拷贝整个文件夹,关键代码如下:
#!/usr/bin/env python3
import shutil
import os
# copy a directory
shutil.copytree(src, dst)
# chown -R
os.chown(dst, uid, gid)
for root, dirs, files in os.walk(dst):
for momo in dirs:
os.chown(os.path.join(root, momo), uid, gid)
for momo in files:
os.chown(os.path.join(root, momo), uid, gid)
拷贝单个文件,关键代码如下:
if not os.path.exists(dst):
open(dst, 'w').close()
os.system('cp -f {} {}'.format(src, dst))
os.chown(dst, uid, gid)
完整的代码见batch_copy_files.py。