向学生分发文件,事实上是批量拷贝文件。

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

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2022-06-05 13:53

results matching ""

    No results matching ""