一 OS模块

对系统进行操作

1.1 popen

可以把运行的结果,这个字符串转化成utf-8这样的编码格式在进行输出

import os
res = os.popen("ifconfig").read()
print(res)

执行

[root@node10 python]# python3 test.py
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.132.140 netmask 255.255.255.0 broadcast 192.168.132.255
inet6 fe80::143b:809:1937:30b7 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:66:70:ef txqueuelen 1000 (Ethernet)
RX packets 788506 bytes 577669647 (550.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 723273 bytes 85635044 (81.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

1.2 listdir()

获取指定文件夹中所有内容的名称列表

import os
lst = os.listdir("/python")
print(lst)
[root@node1

执行

['0209_1.txt', 
'0208.txt',
'集合.png',
'集合2.png',
'0208_1.txt',
'0208_2.txt',
'0208_3.txt',
'0208_4.txt',
'集合3.png',
'0208_5.txt',
'0209_2.txt',
'0209_3.txt',
'0209_4.txt',
'test.py',
'0208_7.txt',
'0208_6.txt',
'0209.txt']

1.3 getcwd()

获取当前文件所在的默认路径

import os
res = os.getcwd()
print(res)

执行

[root@node10 python]# python3 test.py
/python
[root@node10 python]# pwd
/python

1.4 对文件的操作

  • chdir()   修改当前文件工作的默认路径
  • os.chdir("D:\深圳周末三期\L006\lianxi_abc")
  • os.mkdir 创建目录(文件夹)
  • os.rmdir 删除目录(文件夹)
  • os.rmdir("ceshi_111")
  • os.rename 对文件,目录重命名
  • os.rename("ceshi_222","ceshi333")
  • copy(src,dst)
import os
os.mkdir("/tmp/test")

执行

[root@node10 python]# ll /tmp/test/ -d
drwxr-xr-x. 2 root root 6 Nov 25 09:01 /tmp/test/
[root@node10 python]# date
Mon Nov 25 09:02:08 EST 2019

1.5 environ

获取或修改环境变量

import os
res = os.environ
print(res)

执行

environ({'XDG_SESSION_ID': '', 
'HOSTNAME': 'node10',
'SELINUX_ROLE_REQUESTED': '',
'TERM': 'xterm',
'SHELL': '/bin/bash',
'HISTSIZE': '',
'SSH_CLIENT': '192.168.132.1 6008 22',
'SELINUX_USE_CURRENT_RANGE': '',
'OLDPWD': '/root',
'SSH_TTY': '/dev/pts/0',
'USER': 'root',
'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:',
'SSH_AUTH_SOCK': '/tmp/ssh-VeQHPjKfCf/agent.73524',
'MAIL': '/var/spool/mail/root',
'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin',
'PWD': '/python',
'LANG': 'en_US.UTF-8',
'SELINUX_LEVEL_REQUESTED': '',
'HISTCONTROL': 'ignoredups',
'SHLVL': '',
'HOME': '/root',
'LOGNAME': 'root',
'SSH_CONNECTION': '192.168.132.1 6008 192.168.132.140 22',
'LESSOPEN': '||/usr/bin/lesspipe.sh %s', 'XDG_RUNTIME_DIR': '/run/user/0', '_': '/usr/bin/python3'})
============================================
[root@node10 python]# env
XDG_SESSION_ID=85
HOSTNAME=node10
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.132.1 6008 22
SELINUX_USE_CURRENT_RANGE=
OLDPWD=/root
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
SSH_AUTH_SOCK=/tmp/ssh-VeQHPjKfCf/agent.73524
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/python
LANG=en_US.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.132.1 6008 192.168.132.140 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

1.6 os 模块属性

name 获取系统标识

linux,mac ->posix      windows -> nt

import os
print(os.name)

执行

[root@node10 python]# python3 test.py
posix

sep 获取路径分割符号

linux,mac -> /       window-> \  *****

import os
print(os.sep)

执行

[root@node10 python]# python3 test.py
/

linesep 获取系统的换行符号

import os
print(repr(os.linesep))

执行

[root@node10 python]# python3 test.py
'\n'

shutil模块

复制文件

import shutil
shutil.copy("test.py","../test1.py")

执行

[root@node10 python]# python3 test.py
[root@node10 python]# cat ../test1.py
import shutil
shutil.copy("test.py","../test1.py")

二  os.path模块

2.1 abspath()

将相对路径转化为绝对路径

. 或者.. 代表的是相对路径

import os
res = os.path.abspath(".")
print(res)

执行

[root@node10 python]# python3 test.py
/python

2.2 basename()

返回文件名部分

import os
strvar = r"/python/0208_2.txt"
res = os.path.basename(strvar)
print(res)

执行

[root@node10 python]# python3 test.py
0208_2.txt

2.3 dirname()

返回路径部分

import os
strvar = r"/python/0208_2.txt"
res = os.path.dirname(strvar)
print(res)

执行

[root@node10 python]# python3 test.py
/python

2.4 split()

将路径拆分成单独的文件部分和路径部分 组合成一个元组

import os
strvar = r"/python/0208_2.txt"
res = os.path.split(strvar)
print(res)

执行

[root@node10 python]# python3 test.py
('/python', '0208_2.txt')

2.5 join()

将多个路径和文件组成新的路径

import os
path1 = "home"
path2 = "test1"
path3 = "test2"
#可以自动通过不同的系统加不同的斜杠 linux / windows \
res = os.path.join(path1,path2,path3)
print(res)

执行

[root@node10 python]# python3 test.py
home/test1/test2

2.6 splitext()

将路径分割为后缀和其他部分

通过splitext 可以快速拿到一个路径中的后缀

import os
strvar = r"/python/test.py"
res = os.path.splitext(strvar)
print(res)

执行

[root@node10 python]# python3 test.py
('/python/test', '.py')

2.7 getsize()

获取文件的大小

import os
strvar = r"/python/test.py"
res = os.path.getsize(strvar)
print(res)

执行

[root@node10 python]# python3 test.py
80

2.8 isdir()和isfile()

isdir()检测路径是否是一个文件夹(路径)

isfile()   检测路径是否是一个文件

import os
strvar = r"/python/"
res = os.path.isdir(strvar)
print(res) res = os.path.isfile(strvar)
print(res)

执行

[root@node10 python]# python3 test.py
True
False

2.9 时间相关

getctime() [windows]文件的创建时间,[linux]权限的改动时间(返回时间戳)

getmtime() 获取文件最后一次修改时间(返回时间戳)

getatime() 获取文件最后一次访问时间(返回时间戳) # 存在系统差异

exists()   检测指定的路径是否存在

isabs()    检测一个路径是否是绝对路径 (了解)

import os
strvar = r"/python/test.py"
print ("getctime")
res = os.path.getctime(strvar)
print(res) import time
res = time.ctime(1557649965)
print (res) print ("getmtime")
res = os.path.getmtime(strvar)
print(res) print ("getatime")
res = os.path.getatime(strvar)
print(res) print ("exists")
res = os.path.exists(strvar)
print(res) print ("isabs")
res = os.path.isabs(strvar)
print(res)

执行

getctime
1574693880.2914786
Sun May 12 04:32:45 2019
getmtime
1574693880.2903953
getatime
1574693882.052988
exists
True
isabs
True

2.10 os.listdir

计算一个文件夹当中所有文件的大小

import os
pathvar = r"/python"
lst = os.listdir(pathvar)
print(lst)

执行

[root@node10 python]# python3 test.py
['0209_1.txt', '0208.txt', '集合.png', '集合2.png', '0208_1.txt', '0208_2.txt', '0208_3.txt', '0208_4.txt', '集合3.png', '0208_5.txt', '0209_2.txt', '0209_3.txt', '0209_4.txt', 'test.py', '0208_7.txt', '0208_6.txt', '0209.txt']

2.11 计算文件大小

1 普通方式

import os
pathvar = r"/python"
lst = os.listdir(pathvar)
print(lst) size = 0
for i in lst:
     # 拼接路径  用来判断是文件夹还是文件夹
pathvar2 = os.path.join(pathvar,i)
# 如果是文件夹 执行相应逻辑
if os.path.isdir(pathvar2):
print(i+"是[目录]")
     # 如果是文件, 计算文件大小
elif os.path.isfile(pathvar2):
print(i+"是[文件]")
          # os.path.getsize 只能计算文件的大小
          # 用size 这个变量不停的累加文件大小
          size += os.path.getsize(pathvar2) print(size)

执行

['0209_1.txt', '0208.txt', '集合.png', '集合2.png', '0208_1.txt', '0208_2.txt', '0208_3.txt', '0208_4.txt', '集合3.png', '0208_5.txt', '0209_2.txt', '0209_3.txt', '0209_4.txt', 'test.py', '0208_7.txt', '0208_6.txt', '0209.txt']
0209_1.txt是[文件]
0208.txt是[文件]
集合.png是[文件]
集合2.png是[文件]
0208_1.txt是[文件]
0208_2.txt是[文件]
0208_3.txt是[文件]
0208_4.txt是[文件]
集合3.png是[文件]
0208_5.txt是[文件]
0209_2.txt是[文件]
0209_3.txt是[文件]
0209_4.txt是[文件]
test.py是[文件]
0208_7.txt是[文件]
0208_6.txt是[文件]
0209.txt是[文件]
67149

(2) 使用递归来计算文件的总大小

import os
pathvar = "/python"
def getallsize(pathvar):
size = 0
lst = os.listdir(pathvar)
print(lst) #['a.txt', 'b.txt', 'ceshi333']
for i in lst:
pathvar2 = os.path.join(pathvar,i)
if os.path.isdir(pathvar2):
# 模拟鼠标点击进去的动作
'''size += getallsize(pathvar2) 是和上一个代码唯一不一样的地方;'''
size += getallsize(pathvar2) print("是文件夹")
elif os.path.isfile(pathvar2):
size += os.path.getsize(pathvar2)
return size
res = getallsize(pathvar)
print(res)

执行

[root@node10 python]# python3 test.py
['0209_1.txt', '0208.txt', '集合.png', '集合2.png', '0208_1.txt', '0208_2.txt', '0208_3.txt', '0208_4.txt', '集合3.png', '0208_5.txt', '0209_2.txt', '0209_3.txt', '0209_4.txt', 'test.py', '0208_7.txt', '0208_6.txt', '0209.txt']
67383

三 zipfile模块 文件压缩

3.1 压缩文件

import zipfile
# (1)创建一个压缩文件
zf = zipfile.ZipFile("ceshi0209.zip","w",zipfile.ZIP_DEFLATED)
# (2)往压缩包当中存入内容 推荐写入绝对路径
# (路径参数,别名参数)
zf.write(r"/python/test.py","0208_3.txt")
zf.write(r"/python/0209_4.txt","0208_5.txt") # (3)关闭文件
zf.close()

执行

[root@node10 python]# python3 test.py
[root@node10 python]# ll ceshi0209.zip
-rw-r--r--. 1 root root 572 Nov 25 10:18 ceshi0209.zip

3. 2 解压文件

import zipfile
# (1)创建一个压缩文件
zf = zipfile.ZipFile("ceshi0209.zip","w",zipfile.ZIP_DEFLATED)
# (2)往压缩包当中存入内容 推荐写入绝对路径
# (路径参数,别名参数)
zf.write(r"/python/test.py","0208_3.txt")
zf.write(r"/python/0209_4.txt","0208_5.txt") # (3)关闭文件
zf.close() zf = zipfile.ZipFile("ceshi0209.zip","r")
# (1)extractall(路径) 解压所有文件到某个路径下
zf.extractall("/opt/ceshi0209")
zf.close()

(2)extract(文件,路径)    解压指定的某个文件到某个路径下

3.3 追加文件

(支持with写法)

import zipfile
zf = zipfile.ZipFile("ceshi0209.zip","r")
# (2)extract(文件,路径) 解压指定的某个文件到某个路径下
zf.extract("0208_5.txt","/tmp/test")
zf.close() # (3)追加文件(支持with写法)
with zipfile.ZipFile("ceshi0209.zip","a",zipfile.ZIP_DEFLATED) as zf:
# 可以在write写入的时候 , 临时创建文件夹 比如 tmp/555666 这个tmp就是临时文件夹
zf.write(r"/etc/hosts","sudoers")

执行

[root@node10 python]# python3 test.py
[root@node10 python]# ll /tmp/test/
total 4
-rw-r--r--. 1 root root 504 Nov 25 10:41 0208_5.txt

3.4 查看压缩包中的内容

import zipfile# 查看压缩包中的内容
with zipfile.ZipFile("ceshi0209.zip","r") as zf:
res = zf.namelist()
print(res)

执行

[root@node10 python]# python3 test.py
['0208_3.txt', '0208_5.txt', 'etc/sudoers', 'sudoers']

024.Python模块OS模块的更多相关文章

  1. python之OS模块详解

    python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...

  2. python中os模块在windows下的使用

    今天学习了一下Python的os模块,主要是针对文件夹和文件路径的一系列操作. 与Python内置函数相比这里这里的函数功能更多样化,功能也更强大.但是学习过程中我发现很多函数都是只适用于unix系统 ...

  3. python中os模块

    os  模块 操作系统模块,该模块主要处理与操作系统相关的操作 最常用是文件操作:打开.读取 import os os.getcwd() #获取当前执行文件夹路径 ​ os.chdir('dirnam ...

  4. python的os模块总结

    python的os模块总结 目录 常用方法和属性总结 文件操作 目录操作 常用方法和属性总结 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir(&quo ...

  5. python常用模块: random模块, time模块, sys模块, os模块, 序列化模块

    一. random模块  import random # 任意小数 print(random.random()) # 0到1的任意小数 print(random.uniform(-10, 10)) # ...

  6. python中os模块中文帮助

    python中os模块中文帮助   python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ...

  7. Python进阶(九)----json模块, pickle模块, os模块,sys模块,hashlib模块

    Python进阶----json模块, pickle模块, os模块,sys模块,hashlib模块 一丶序列化模块 什么是序列化: ​ 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输 ...

  8. python中os模块简介

    一.什么是os模块 os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,所以离不了 ...

  9. python之os模块使用

    python中os模块的常用语法 1.查看当前路径及路径下的目录 os.getcwd():返回当前路径(不包括文件名) os.listdir():返回当前路径下的所有目录列表. os.listdir( ...

  10. Python中os模块、csv模块和xlrd模块的使用

    目录 os模块的使用 open("test.txt","mode") 读取文件中的内容 f.read() f.readline(size) f.readline ...

随机推荐

  1. .NET设计篇08-线程统一取消模型和跨线程访问UI

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂,输出倒逼输入 内容目录 一.线程统一取消模型1.取消令牌2.可以中断的线程1.设计一个中断函数2.创建CancellationTokenSour ...

  2. 1040 有几个PAT (25 分)C语言

    字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T). 现给定字符 ...

  3. oracle mysql sql 根据一张表更新另一张表

    update CDINFO.Dept_Dict tab1 set PART_FLAG = (select PART_FLAG from DICT.DEPARTMENT_DICT@zyhis4 tab2 ...

  4. .net core 3.0 搭建 IdentityServer4 验证服务器

    叙述 最近在搞 IdentityServer4  API接口认证部分,由于之前没有接触过 IdentityServer4 于是在网上一顿搜搜搜,由于自己技术水平也有限,看了好几篇文章才搞懂,想通过博客 ...

  5. 在64位ubuntu上安装tensorflow

    首先从ubuntu14.04的安装讲起 1.下载ubuntu14.04 64位的系统,下载地址如下: http://www.ubuntu.com/download/desktop 2.下载好64位的u ...

  6. Java中数组的使用

    1.声明数组 1.1声明一维数组 声明一维数组有下列两种格式: 数组的元素类型      数组名字[ ]; 数组的元素类型[ ]   数组名字 1.2声明二维数组 声明二维数组有下列两种格式: 数组的 ...

  7. springmvc接收json数据的常见方式

    经常使用Ajax异步请求来进行数据传输,传的数据是json数据,json数据又有对象,数组.所有总结下springmvc获取前端传来的json数据方式:1.以RequestParam接收前端传来的是j ...

  8. C#反射与特性(五):类型成员操作

    目录 1,MemberInfo 1.1 练习-获取类型的成员以及输出信息 1.2 MemberType 枚举 1.3 MemberInfo 获取成员方法并且调用 1.4 获取继承中方法的信息(Decl ...

  9. ArcEngine DEM叠加影像

    代码执行前: 代码执行后: 影像叠加代码: /// <summary> /// 叠加DEM /// </summary> /// <param name="pR ...

  10. css控制div等比高度

    在移动端开发中,在banner轮播图未加载出来之前,banner层是不占文档流高度的,当从服务器获取完banner数据,展示的时候,banner层因为有了内容 所以会撑开,导致banner层下面的内容 ...