Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0443
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在:
- 个人网站: `https://oeasy.org`
- 蓝桥云课: `https://www.lanqiao.cn/courses/3584`
- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
- Gitee: `https://gitee.com/overmind1980/oeasypython`
---- python 的成功不是偶然的
- 新的嫩芽一定是发于陈腐的腐殖质
- 他吸取了 ABC 好的一面
- 也吸取了 shell 和 c 好的一面
- 他可以很方便地操作文件
- 其实我们也可以做一个拷贝程序?🤔
- 看起来就是先读取字节序列
- 再写入字节序列
- 先去游乐场
- 先建立一个oeasy.txt
echo "123" > oeasy.txt
- 再观察
cat oeasy.txt
- 已经存在
f = open ("oeasy.txt", "rb")
b_content = f.read ()
f.close ()
f = open("o2z.txt", "wb" )
f.write(b_content)
f.close ()
- 都选二进制的方式读写
- 因为这样有些不属于文本的内容
- 也可以完成读写
- 原来系统没有 o2z.txt
- 现在有了
- 读出来确实是 oeasy.txt 里面的内容
- 可以动态指定源头和目标吗?
#/usr/bin/python3
import sys
source_file = sys.argv[1]
destination_file = sys.argv[2]
f = open (source_file, "rb")
b_content = f.read ()
f.close ()
f = open(destination_file, "wb" )
f.write(b_content)
f.close ()
- 注意 argv 里面
- 第 0 个是当前 py 文件
- 后面的两个是
- from 的源文件
- to 的目标文件
- 换一个比较复杂的路径呢?
cat /proc/net/tcp
- /proc/net/tcp
- 是当前所有的 tcp 链接
python3 /proc/net/tcp o3z.txt
cat o3z.txt
- 读写都是 ok 的
- 可以用 input 来动态输入么?
- 尝试将源和目标回显
- 读写成功
- 尝试把/usr/bin/python 拷贝到当前目录
- 源文件是
/usr/bin/python - 目标文件是
./p./是当前目录p是文件的名字- 取名叫 p
- 源文件是
- 然后尝试运行
- 但是如果是两个文件同时写同一个文件呢?
- 开两个终端
- 分别运行
- 会如何呢?
- 后执行的结果为准
- 前面的被 truncate 了
- 如果修改源代码
- 能否让某文件同时用"wb"模式被 open 两次呢?
- 第 9 行加了一句话
- 可以同时打开
- 显然还是把第一次拷贝的东西给覆盖掉了
- 把文件写到硬盘
- 可以让文件 迅速恢复
- 把文件备份
- 可以避免 因为误操作 丢失文件
- 如果有可能
- 我们应该对太阳系进行备份
- 万一有问题
- 可以将整个太阳系恢复出来
- python 拷贝程序运行比较顺利
- 但是两个进程同时写的同一个文件可能有问题
- 比如两个一起写
- 而文件又很大
- 后面还会覆盖前面
- 怎么办呢?🤔
- 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。













