Python系统管理模块

shutil模块

复制和移动
  • shutil.copyfileobj(fsrc, fdst[, length])
    将类似文件的对象fsrc的内容复制到类似文件的对象fdst。

  • shutil.copyfile(src, dst, *, follow_symlinks=True)
    将名为src的文件的内容(无元数据)复制到名为dst的文件,然后返回dst。

  • shutil.copy(src, dst, *, follow_symlinks=True)
    将文件src复制到文件或目录dst。src和dst应为字符串。如果dst指定目录,则文件将使用src的基本文件名复制到dst中。返回新创建的文件的路径。

  • shutil.copy2(src, dst, *, follow_symlinks=True)
    与copy()相同,但copy2()也尝试保留所有文件元数据。

  • shutil.move(src, dst, copy_function=copy2)
    递归地将文件或目录(src)移动到另一个位置(dst),并返回目标

目录操作
  • shutil.copytree(src, dst, symlinks=False, ignore=None,copy_function=copy2, ignore_danglin g_symlinks=False)
    递归地复制以src为根的整个目录树,返回目标目录。由dst命名的目标目录不能已经存在。
  • shutil.rmtree (path, ignore_errors=False, οnerrοr=None)
    删除整个目录树; 路径必须指向目录(而不是指向目录的符号链接)
权限管理
  • shutil.copymode(src, dst, *, follow_symlinks=True)
    将权限位从src复制到dst。文件内容,所有者和组不受影响。src和dst是以字符串形式给出的路径名称。
  • shutil.copystat(src, dst, *, follow_symlinks=True)
    将权限位,最后访问时间,上次修改时间和标志从src复制到dst。
  • shutil.chown(path, user=None, group=None)
    更改给定路径的所有者用户和/或组
>>> import shutil
# copyfileobj只是了解底层原理,实际代码不需要使用
>>> f1 = open('/bin/ls', 'rb')
>>> f2 = open('/tmp/list4', 'wb')
>>> shutil.copyfileobj(f1, f2)
>>> f1.close()
>>> f2.close()

# shutil.copyfile只拷贝内容
>>> shutil.copyfile('/bin/ls', '/tmp/list5')
# shutil.copy既拷贝内容,又拷贝权限 
>>> shutil.copy('/bin/ls', '/tmp/list6')
# shutil.copy2相当于系统命令cp -p
>>> shutil.copy2('/bin/ls', '/tmp/list7')
# shutil.move => 相当于系统命令mv
>>> shutil.move('/tmp/list7', '/var/tmp/list')
# copytree相当于cp -r
>>> shutil.copytree('/etc/security', '/tmp/security')
>>> shutil.move('/tmp/security', '/var/tmp/auquan')
# rmtree 相当于rm -rf
>>> shutil.rmtree('/var/tmp/auquan')

# 删除单个文件的函数在os模块
>>> import os
>>> os.remove('/tmp/list5')
# 改变属主属组
>>> shutil.chown('/tmp/list', user='bob', group='bob')

subprocess模块

概述
  • subprocess模块主要用于执行系统命令
  • subprocess模块允许你产生新的进程,连接到它们的输入/输出/错误管道,并获得它们的返回代码
  • 本模块旨在替换几个较早的模块和功能,如
    os.system、os.spawn*
run方法
  • subprocess.run方法在python3.5引入。早期版本可以使用subprocess.call方法

直接执行命令

>>>	subprocess.run('ls')
>>>	subprocess.run(['ls','/home'])
>>>	subprocess.run('ls	/home')
... ...
FileNotFoundError:	[Errno	2]	No	such	file	or	directory:	'ls	/home':	'ls	/home'
>>>	subprocess.run(['ls',	'~'])
ls:	cannot	access	~:	No	such	file	or	directory

通过shell执行命令

>>>	subprocess.run(['ls',	'~'],	shell=True)
>>>	subprocess.run('ls	/home',	shell=True)

run方法返回值

>>>	result	=	subprocess.run(['ls',	'/home'])
>>>	result.args
['ls',	'/home']
>>>	

输出和错误

  • run方法执行的结果默认打印在屏幕上,也可以通过管道将其存储在标准输出和标准错误中
>>>	result	=	subprocess.run(['ls',	'/home'],	stdout=subprocess.PIPE,	
stderr=subprocess.PIPE)
>>>	result.stdout
b'alice\nbob\njerry\nlisi\nStudent\ntom\nwangwu\n'
>>>	print(result.stdout.decode())
alice
bob
jerry
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值