Skip to content

Latest commit

 

History

History
125 lines (84 loc) · 3 KB

195-190650-拷贝程序.sy.md

File metadata and controls

125 lines (84 loc) · 3 KB
show version enable_checker
step
1.0
true

拷贝程序

回忆

  • python 的成功不是偶然的
  • 新的嫩芽一定是发于陈腐的腐殖质
  • 他吸取了 ABC 好的一面
  • 也吸取了 shell 和 c 好的一面
  • 他可以很方便地操作文件
  • 其实我们也可以做一个拷贝程序?🤔
  • 先去游乐场

拷贝流程

  • 拷贝其实很简单
  • 就是先读后写么

图片描述

  • 我们都选择使用二进制的方式读写
  • 因为这样有些不属于文本的内容也可以读写到

系统验证

  • 原来系统没有 o2z.txt
  • 现在有了
  • 读出来确实是 oeasy.txt 里面的内容

图片描述

添加参数

图片描述

  • 注意 argv 里面
  • 第 0 个是当前 py 文件
  • 后面的两个是
    • from 的源文件
    • to 的目标文件
  • 换一个比较复杂的路径呢?

绝对路径

图片描述

图片描述

  • /proc/net/tcp
    • 是当前所有的 tcp 链接
  • 读写都是 ok 的
  • 可以用 input 来动态输入么?

动态输入

图片描述

图片描述

  • 读写成功

读写大文件

  • 尝试把/usr/bin/python 拷贝到当前目录
    • cp /usr/bin/python ./p
      • cp 的意思是拷贝
      • cp 的语法是cp 源文件 目标文件
        • 源文件是/usr/bin/python
        • 目标文件是./p
          • ./是当前目录
          • p是文件的名字
    • 取名叫 p
    • 然后尝试运行

图片描述

同时写

  • 但是如果是两个文件同时写呢?
  • 开两个终端
  • 分别运行
  • 会如何呢?

图片描述

执行结果

  • 后执行的结果为准
  • 前面的被 truncate 了

图片描述

  • 如果修改源代码
  • 能否让某文件同时用"wb"模式被 open 两次呢?

修改源代码

图片描述

  • 第 9 行加了一句话

同时运行

图片描述

运行结果

图片描述

  • 可以同时打开
  • 显然还是把第一次拷贝的东西给覆盖掉了

总结

  • python 拷贝程序运行比较顺利
  • 但是两个进程同时写的同一个文件可能有问题
  • 比如两个一起写
  • 后面就会覆盖前面
  • 怎么办呢?🤔
  • 下次再说 👋