1.1 问题
创建cp.py文件,实现以下目标:

将/bin/ls“拷贝”到/root/目录下
不要修改原始文件
1.2 方案
获取用户原文件名和新文件名,打开原文件,打开新文件,从打开的原文件中读取数据,写入到打开的新文件中,关闭两个文件

cp代码的过程中,需要注意的部分在于:

如果一个文件过大,你将无法直接读取数据到内存,此时,使用while循环语句,分次读取数据,每次读4096字节,读取数据为空时,结束循环,将数据写入到目标文件

1.3 步骤
实现此案例需要按照如下步骤进行。

步骤一:编写脚本

 [root@localhost day03]# vim cp.py
#!/usr/bin/env python3
f1 = open('/bin/ls', 'rb')
f2 = open('/root/ls', 'wb')
data = f1.read()
f2.write(data)
f1.close()
f2.close()

或将上面的代码改为以下写法:

循环读取文件中数据,避免读取数据过大

[root@localhost day03]# vim cp2.py
#!/usr/bin/env python3
src_fname = '/bin/ls'
dst_fname = '/tmp/ls'
src_fobj = open(src_fname, 'rb')
dst_fobj = open(dst_fname, 'wb')
while True:data = src_fobj.read(4096)   # 每次读4096字节if data == b'':              # 读不到数据意味着读写完毕,中断循环breakdst_fobj.write(data)         # 将数据写到目标文件
src_fobj.close()
dst_fobj.close()

或将上面的代码改为以下写法:

With打开文件读取数据或写入数据后,文件会直接关闭

[root@localhost day03]# vim cp3.py
#!/usr/bin/env python3
src_fname = '/bin/ls'
dst_fname = '/root/ls'
with open(src_fname, 'rb') as src_fobj:with open(dst_fname, 'wb') as dst_fobj:while True:data = src_fobj.read(4096)if not data:breakdst_fobj.write(data)

或将上面的代码改为以下写法:

sys.argv方法表示空列表,执行脚本时输入命令: python3 cp_func.py /bin/ls /root/ls,表示sys.argv=[cp_func.py,‘/bin/ls’,‘/root/ls’],所以,调用copy函数时,列表切片方式获取实参为(‘/bin/ls’,‘/root/ls’)

[root@localhost day03]# vim cp_func.py
#!/usr/bin/env python3
import sys
def copy(src_fname, dst_fname):src_fobj = open(src_fname, 'rb')dst_fobj = open(dst_fname, 'wb')while True:data = src_fobj.read(4096)if not data:breakdst_fobj.write(data)src_fobj.close()dst_fobj.close()
copy(sys.argv[1], sys.argv[2])

步骤二:测试脚本执行

[root@localhost day03]# python3 cp.py
[root@localhost day03]# cd /root
[root@localhost ~]# ls
core  ls
[root@localhost day03]# python3 cp2.py
[root@localhost day03]# cd /root
[root@localhost ~]# ls
core  ls
[root@localhost day03]# python3 cp3.py
[root@localhost day03]# cd /root
[root@localhost ~]# ls
core  ls
[root@localhost day03]# python3 cp_func.py /bin/ls /root/ls
[root@localhost day03]# cd /root
[root@localhost ~]# ls
core  ls

Python模拟cp操作相关推荐

  1. 利用Python模拟鼠标操作,一键将GIF文件载入CSDN的Markdown编辑器

    简 介: 讨论了在csdn的Markdown编译器中自动载入GIF文件的方法.使用了Python中的pyautogui软件包,可以通过Python的小程序实现一键将GIF文件载入CSDN的Markdo ...

  2. Python模拟手机操作

    1.安装adb shell 只需要下载zip包即可,解压后即可用. https://www.xda-developers.com/install-adb-windows-macos-linux/ 2. ...

  3. python模拟手机操作_Selenium使用Chrome模拟手机浏览器方法解析

    在使用Chrome浏览网页时,我们可以使用Chrome开发者工具模拟手机浏览器,在使用Selenium操作Chrome时同样也可以模拟手机浏览器.主要有以下两种用途. 测试H5页面在不同分辨率设备上的 ...

  4. python模拟app操作_Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫-阿里云开发者社区...

    爬前准备工作 在开始安装Appium之前,你要先知道Appium是做什么的?Appium 是一个自动化测试开源工具,看到没,做测试用的,它有点类似Selenium,可以自动操作APP实现一系列的操作. ...

  5. python 模拟浏览器操作_python 使用 mechanize 模拟浏览器访问网页

    知道如何快速在命令行或者python脚本中实例化一个浏览器通常是非常有用的. 每次我需要做任何关于web的自动任务时,我都使用这段python代码去模拟一个浏览器. import mechanize ...

  6. 用Python模拟浏览器操作

    两种思绪三种要领: 用pamie.建议不要使用,因为pamie为小我私人开发,里面的bug比力多,并且是直接使用win32com体式格局的,如果ie不警惕修改了,后果很严重.另外,pamie3使用的是 ...

  7. python 模拟用户点击浏览器_使用python进行模拟浏览器操作

    使用python完成模拟浏览器操作主要是使用selenium来模拟浏览器,当然还要带上浏览器的驱动比如chromedriver.exe的驱动. 一般使用selenium进行模拟操作需要注意引入一下几个 ...

  8. python模拟浏览器下载文件在哪里_python下selenium模拟浏览器基础操作

    1.安装及下载 selenium安装: pip install selenium  即可自动安装selenium geckodriver下载:https://github.com/mozilla/ge ...

  9. python在手机使用webdriver.chromns_Selenium +Chrome浏览器如何模拟手机操作

    Selenium +Chrome浏览器如何模拟手机操作 进入手机模式 打开谷歌浏览器,按F12,进入开发者模式,点击Toggle device toolbar,进入手机模式 设置Chrome的手机模式 ...

最新文章

  1. Python学习day5作业
  2. 详解 GNU C 标准中的 typeof 关键字
  3. pycharm 安装与激活
  4. boost::python模块包装几个 C++ 函数 将二维数组操作为采用 NumPy 数组的 Python 函数作为参数
  5. Mac安装RocketMQ和可视化控制台教程
  6. windows 编程 —— 消息与参数(滚动条、键盘、鼠标)
  7. 交互进CMU后可以学计算机吗,转专业必看!申请计算机的先修课要求,以CMU为例...
  8. ProxyToken:微软 Exchange 服务器中的认证绕过新漏洞,可窃取用户邮件
  9. java manualbuffer_FlatBuffer Java Bean自由转换
  10. 机器学习实践指南(五)—— GD/SGD/MSGD 伪代码演示
  11. arange函数--Numpy
  12. javafx 按钮中放置图片导致大小设置失效
  13. 新概念模拟电路——初识晶体管
  14. 故障管理流程与故障管理功能开发的设计
  15. 全国计算机科学与技术讲师电话,计算机科学与技术学院
  16. 参加河北省研究生数学建模比赛有感
  17. 编程语言名称背后的有趣故事
  18. 使用 Rook 构建生产可用存储环境实践
  19. linux 命令集合1
  20. 数学-蕴涵->真值表理解

热门文章

  1. 手机端关闭微信浏览器
  2. php如何让字符串变运算公式,MySQL_使用java处理字符串公式运算的方法,  在改进一个关于合同的项 - phpStudy...
  3. 法硕(非法学)值不值得考?
  4. gitlab启动访问502,Whoops, GitLab is taking too much time to respond。
  5. 【教程】Linux下Https证书生成,与Nginx配置https
  6. java @literal_Java中的Pattern LITERAL字段的示例
  7. 两台电脑传文件|如何快速传输几百G的文件
  8. N卡和A卡有什么区别?43.248.188.x
  9. AIOps智能运维学习资料汇总
  10. 10寸 nuc972_NUC972----最简单的驱动(转)