python之os模块 +shutil 模块

对系统进行操作 os

system() 在python中执行系统命令
popen() 执行系统命令返回对象,通过read方法读出字符串 (防止字符串乱码,使用popen进行操作)
obj = os.popen(“ifconfig”) # 显示的时候,按照utf-8进行转换,默认windows是gbk的编码集
listdir() 获取指定文件夹中所有内容的名称列表
lst = os.listdir(".") # . 当前目录
lst = os.listdir("…") # … 上一级目录
getcwd() 获取当前文件所在的默认路径 (单纯的路径)
print(file) 路径 + 文件
chdir() 修改当前文件工作的默认路径
environ 获取或修改环境变量
os 模块属性
name 获取系统标识 linux,mac ->posix windows -> nt
sep 获取路径分割符号 linux,mac -> / window->
linesep 获取系统的换行符号 linux,mac -> \n window->\r\n 或 \n

os 与shutil模块

os -> 新建/删除
os.mknod 创建文件
os.remove 删除文件
os.mkdir 创建目录(文件夹)
os.rmdir 删除目录(文件夹)
os.rename 对文件,目录重命名
os.makedirs 递归创建文件夹
os.removedirs 递归删除文件夹(空文件夹)
shutil -> 复制/移动
单纯复制文件的内容
#copyfileobj(fsrc, fdst[, length=16*1024]) 复制文件 (length的单位是字符(表达一次读多少字符))
#copyfile(src,dst) #单纯的仅复制文件内容 , 底层调用了 copyfileobj
单纯复制权限
#copymode(src,dst) #单纯的仅复制文件权限 , 不包括内容 (虚拟机共享目录都是默认777)
#copystat(src,dst) #复制所有状态信息,包括权限,组,用户,修改时间等,不包括内容
复制文件内容 + 文件权限
#copy(src,dst) #复制文件权限和内容
#copy2(src,dst) #复制文件权限和内容,还包括权限,组,用户,时间等
删除/移动(文件和文件夹)
#copytree(src,dst) #拷贝文件夹里所有内容(递归拷贝)
#rmtree(path) #删除当前文件夹及其中所有内容(递归删除)
#move(path1,paht2) #移动文件或者文件夹
shutil.move(“lianxi100”,"…/lianxi1000") # 移动并改名

os.path 路径模块

basename() 返回文件名部分
dirname() 返回路径部分
split() 将路径拆分成单独的文件部分和路径部分 组合成一个元组
join() 将多个路径和文件组成新的路径 可以自动通过不同的系统加不同的斜杠 linux / windows\
splitext() 将路径分割为后缀和其他部分
getsize() 获取文件的大小
isdir() 检测路径是否是一个文件夹
isfile() 检测路径是否是一个文件
islink() 检测路径数否是一个链接
getctime() [windows]文件的创建时间,[linux]权限的改动时间(返回时间戳)
getmtime() 获取文件最后一次修改时间(返回时间戳)
getatime() 获取文件最后一次访问时间(返回时间戳)
exists() 检测指定的路径是否存在
isabs() 检测一个路径是否是绝对路径
abspath() 将相对路径转化为绝对路径

压缩模块 tarfile

1.创建tar包
(1).tar
tf = tarfile.open("ceshi0729_1.tar","w",encoding="utf-8")
(2).tar.gz
tf = tarfile.open("ceshi0729_2.tar.gz","w:gz",encoding="utf-8")
(3).tar.bz2
tf = tarfile.open("ceshi0729_3.tar.bz2","w:bz2",encoding="utf-8")
2.对压缩包进行解压
tf = tarfile.open("ceshi0729_3.tar.bz2","r",encoding="utf-8")
# 解压单个
tf.extract("echo","ceshi0729_4")
# 解压所有
# tf.extractall("ceshi0729_3")
tf.close()
3.追加文件 (支持with语法) [只能为没有压缩过的tar包进行追加.]
with tarfile.open("cceshi0729_1.tar","a",encoding="utf-8") as tf:
	tf.add("/bin/cp","cp")

 4.查看压缩包中的文件
with tarfile.open("ceshi0729_2.tar.gz","r",encoding="utf-8") as tf:
	lst = tf.getnames()
	print(lst)
 ### 如何处理tarfile不能再已经压缩过的保重追加内容的问题
# ceshi0729_3.tar.bz2
import os
path = os.getcwd()
# 找到要解压的包的路径
pathvar1 = os.path.join(path,"ceshi0729_3.tar.bz2")
print(pathvar1)
# 解压到哪里去
pathvar2 =  os.path.join(path,"ceshi0729_3")
print(pathvar2)

# (1) 先对已经压缩过的包进行解压
with tarfile.open(pathvar1,"r",encoding="utf-8") as tf:
	tf.extractall(pathvar2)

# (2) 往这个解压的文件夹中添加新的文件
mybin = "cp -a /bin/fgrep " + pathvar2
# print(mybin) # cp -a /bin/fgrep /mnt/hgfs/python31_gx/day19/ceshi0729_3
os.system(mybin)


# (3) 对这个文件进行过滤筛选,重新打包压缩 (不要echo)
lst = os.listdir(pathvar2)
print(lst)
with tarfile.open(pathvar1,"w:bz2",encoding="utf-8") as tf:
	for i in lst:
		if i != "echo":
			# 拼接完整路径
			pathnew = os.path.join(pathvar2,i)
			# add(路径,别名)
			tf.add(pathnew,i)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值