系统与文件管理模块

一、os

1、os.pardir  #获取当前目录的父目录字符串名:('..')

2、os.mkdir('dirname')    #创建单级目录;相当于shell中mkdir dirname

3、os.makedirs('dirname1/dirname2')    #创建多级目录

4、os.removedirs('dirname1')    #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

5、os.rmdir('dirname')    #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

6、os.listdir('dirname')    #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

7、os.remove()  #删除一个文件

8、os.rename("oldname","newname")  #重命名文件/目录

9、os.stat('path/filename')  #获取文件/目录信息

10、os.sep    #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"

11、os.linesep    #输出当前平台使用的行终止符,Windows使用'\r\n',Linux and MAC使用'\n'

12、os.pathsep    #输出用于分割文件路径的字符串

13、os.name    #输出字符串指示当前使用平台。win->'nt'; Linux and MAC->'posix'

14、os.system("system command")  #执行系统命令,完成后退出,只返回命令的执行状态(0:成功,非0:失败),不返回命令的执行结果

15、os.popen("system command")  #执行系统命令,不返回命令的执行状态,实现一个“管道”可以用来返回命令的执行结果

16、os.environ  #获取操作系统所有的环境变量

17、os.environ.setdefault('HOME','/home/alex') #设置系统环境变量,仅程序运行时有效

18、os.getenv("USERNAME") #获取操作系统的某个环境变量

19、os.getcwd() #得到当前工作目录,即当前Python脚本工作的目录路径

20、os.chmod(file)#修改文件权限与时间戳

21、os.chdir(dirname) #改变工作目录到dirname

22、os.get_terminal_size() #获取当前终端的大小 

23、os.kill(10884,signal.SIGKILL) #杀死进程

24、os.path.abspath(path)  #返回path规范化的绝对路径

25、os.path.split(path)  #将path分割成目录和文件名二元组返回,例如:os.path.split('/home/code/poem.txt') 结果:('/home/code','poem.txt')

26、os.path.splitext() #分离扩展名二元组返回,例如:os.path.splitext('/usr/local/test.py'),结果:('/usr/local/test', '.py')

27、os.path.dirname(path)  #返回path的目录。其实就是os.path.split(path)的第一个元素

28、os.path.basename(path)  #返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素

29、os.path.exists(path)  #如果path存在,返回True;如果path不存在,返回False

30、os.path.isabs(path)  #如果path是绝对路径,返回True

31、os.path.isfile(path)  #如果path是一个存在的文件,返回True。否则返回False

32、os.path.isdir(path)  #如果path是一个存在的目录,则返回True。否则返回False

33、os.path.join(path1[, path2[, ...]])  #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略(可以用来连接目录和文件名)

34、os.path.getatime(path)  #返回path所指向的文件或者目录的最后存取时间

35、os.path.getmtime(path)  #返回path所指向的文件或者目录的最后修改时间

36、os.path.getsize(filename)#获取文件大小

 

二、sys

1、sys.argv           #命令行参数List,第一个元素是程序本身路径

2、sys.exit(n)        #退出程序,正常退出时exit(0)

3、sys.version        #获取Python解释程序的版本信息

4、sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

6、sys.platform       #返回操作系统平台名称

7、sys.stdout.write('please:')  #标准输出 , 引出进度条的例子, 注,在py3上不行,可以用print代替
'''
sys.stdout与print:

在python中调用print时,事实上调用了sys.stdout.write(obj+'\n')

print 将需要的内容打印到控制台,然后追加一个换行符

以下两行代码等价:

sys.stdout.write('hello' + '\n')

print('hello')
'''
8、val = sys.stdin.readline()[:-1] #标准输入
'''
sys.stdin与input

sys.stdin.readline( )会将标准输入全部获取,包括末尾的'\n',因此用len计算长度时是把换行符'\n'算进去了的,但是input( )获取输入时返回的结果是不包含末尾的换行符'\n'的。

因此如果在平时使用sys.stdin.readline( )获取输入的话,不要忘了去掉末尾的换行符,可以用strip( )函数(sys.stdin.readline( ).strip('\n'))或sys.stdin.readline( )[:-1]这两种方法去掉换行。
'''

三、stat

>>> import os
>>> print os.stat("/root/python/zip.py")
(33188, 2033080, 26626L, 1, 0, 0, 864, 1297653596, 1275528102, 1292892895)
>>> print os.stat("/root/python/zip.py").st_mode   #权限模式
33188
>>> print os.stat("/root/python/zip.py").st_ino    #inode number
2033080
>>> print os.stat("/root/python/zip.py").st_dev    #device
26626
>>> print os.stat("/root/python/zip.py").st_nlink  #number of hard links
1
>>> print os.stat("/root/python/zip.py").st_uid    #所有用户的user id
0
>>> print os.stat("/root/python/zip.py").st_gid    #所有用户的group id
0
>>> print os.stat("/root/python/zip.py").st_size   #文件的大小,以位为单位
864
>>> print os.stat("/root/python/zip.py").st_atime  #文件最后访问时间
1297653596
>>> print os.stat("/root/python/zip.py").st_mtime  #文件最后修改时间
1275528102
>>> print os.stat("/root/python/zip.py").st_ctime  #文件创建时间
1292892895
#1.可以对st_mode做相关的判断,如是否是目录,是否是文件,是否是管道等。
if stat.S_ISREG(mode):               #判断是否一般文件
   print 'Regular file.'
elif stat.S_ISLNK (mode):            #判断是否链接文件
   print 'Shortcut.'
elif stat.S_ISSOCK (mode):           #判断是否套接字文件    
   print 'Socket.'
elif stat.S_ISFIFO (mode):           #判断是否命名管道
   print 'Named pipe.'
elif stat.S_ISBLK (mode):            #判断是否块设备
   print 'Block special device.'
elif stat.S_ISCHR (mode):            #判断是否字符设置
  print 'Character special device.'
elif stat.S_ISDIR (mode):            #判断是否目录
  print 'directory.'
##额外的两个函数
stat.S_IMODE (mode):            #返回文件权限的chmod格式
  print 'chmod format.'
stat.S_IFMT (mode):             #返回文件的类型
  print 'type of fiel.'

#2.还有一些是各种各样的标示符,这些标示符也可以在os.chmod中使用,下面附上这些标示符的说明:
stat.S_ISUID: Set user ID on execution.              #不常用
stat.S_ISGID: Set group ID on execution.            #不常用
stat.S_ENFMT: Record locking enforced.              #不常用
stat.S_ISVTX: Save text image after execution.      #在执行之后保存文字和图片
stat.S_IREAD: Read by owner.                        #对于拥有者读的权限
stat.S_IWRITE: Write by owner.                      #对于拥有者写的权限
stat.S_IEXEC: Execute by owner.                     #对于拥有者执行的权限
stat.S_IRWXU: Read, write, and execute by owner.    #对于拥有者读写执行的权限
stat.S_IRUSR: Read by owner.                        #对于拥有者读的权限
stat.S_IWUSR: Write by owner.                       #对于拥有者写的权限
stat.S_IXUSR: Execute by owner.                     #对于拥有者执行的权限
stat.S_IRWXG: Read, write, and execute by group.    #对于同组的人读写执行的权限
stat.S_IRGRP: Read by group.                        #对于同组读的权限
stat.S_IWGRP: Write by group.                       #对于同组写的权限
stat.S_IXGRP: Execute by group.                     #对于同组执行的权限
stat.S_IRWXO: Read, write, and execute by others.   #对于其他组读写执行的权限
stat.S_IROTH: Read by others.                       #对于其他组读的权限
stat.S_IWOTH: Write by others.                      #对于其他组写的权限
stat.S_IXOTH: Execute by others.                    #对于其他组执行的权限

四、shutil

shutil 模块提供了大量的文件的高级操作。特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作。

1、 shutil.copyfileobj(fsrc, fdst[, length])

功能:把一个文件的内容拷贝到另外一个文件中。

2、shutil.copyfile(src, dst)

功能:拷贝文件,但不拷贝权限

3、shutil.copymode(src, dst)

功能:仅拷贝权限,内容、组、用户均不变。

4、shutil.copystat(src, dst)

功能:仅拷贝文件的状态信息,包括:mode bits, atime, mtime, flags

5、shutil.copy(src, dst)

功能:拷贝文件和文件的权限

6、shutil.copy2(src, dst)

功能:拷贝文件和文件的状态信息

7、shutil.copytree(src, dst[, symlinks=False[, ignore=None]])

功能:递归的去拷贝文件,相当于Shell中的cp -r命令

8、shutil.rmtree(path[, ignore_errors[, onerror]])

功能:递归的去删除文件,相当于Shell中的rm -rf命令

9、shutil.move(src, dst)

功能:递归的去移动文件 相当于Shell中的mv命令,可以用来重命名。

10、shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry=0, owner=None, group=None, logger=None)

功能:创建压缩包并且返回文件路径,例如:zip,tar包

base_name : 压缩包的文件名,也可以是压缩包的路径。只是文件名,则保存当前目录,否则保存到指定路径。

format:压缩包种类,'zip','tar','bztar','gztar'

root_dir:需要压缩的文件夹路径(默认当前路径)

owner:用户,默认当前用户

group:组,默认当前组

logger:用于记录日志,通常是logging.Logger对象

五、zipfile

功能:以zip的形式压缩文件,注意了这个只能压缩文件,不能压缩目录,如果压缩,也只能显示空目录。

import zipfile

# 压缩

z = zipfile.ZipFile('laxi.zip', 'w')

z.write('a.log')  #写入

z.write('data.data')

z.close()   #关闭

# 解压

z = zipfile.ZipFile('laxi.zip', 'r')

z.extractall()   #解压

z.close()

六、tarfile

功能:以tar的形式打包文件,这个能打包所有文件,包括目录

import tarfile

# 打包

tar = tarfile.open('your.tar','w')

#不加arcname打的是绝对路径,也就是/Users/wupeiqi/PycharmProjects/bbs2.zip,加这个表示你在your.tar中加什么文件就写什么文件名,也就是bbs2.zip

tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip')

tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip')

tar.close()

# 解压

tar = tarfile.open('your.tar','r')

tar.extractall()  # 可设置解压地址

tar.close()

1、tar打包不会压缩文件,所以文件的大小没有变

2、zip才会压缩,所以压缩后的文件大小会变小

3、一般情况下是先打包再压缩

七、psutil

1.  #查看cpu的信息 

print u"CPU 个数 %s"%psutil.cpu_count() 

print u"物理CPU个数 %s"%psutil.cpu_count(logical=False) 

print u"CPU uptimes" 

print psutil.cpu_times() 

print "" 

 

2.  #查看内存信息 

mem = psutil.virtual_memory()

print u"系统总内存 %s G"%(mem.total/1024/1024/1024) 

print u"系统可用内存 %s G"%(mem.available/1024/1024/1024) 

mem_rate = int(mem.available)/float(mem.total) 

print u"系统内存使用率 %s %%"%int(mem_rate*100) 

 

3.  #交换分区

swapmem = psutil.swap_memory()

print u"交换分区 %s G"%(swapmem.total/1024/1024/1024) 

print u"交换分区可用 %s G"%(swapmem.free/1024/1024/1024) 

print u"交换分区使用率 %s %%"%int(swapmem.percent) 

4.  #系统启动时间 

print u"系统启动时间 %s"

%datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S") 

 

5.  #系统用户 

users_count = len(psutil.users()) 

users_list = ",".join([ u.name for u in psutil.users()]) 

print u"当前有%s个用户,分别是%s"%(users_count, users_list) 

 

6.  #网卡,可以得到网卡属性,连接数,当前流量等信息 

net = psutil.net_io_counters() 

bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024) 

bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024) 

print u"网卡接收流量 %s 网卡发送流量 %s"%(bytes_rcvd, bytes_sent)

nis=psutil.net_io_counters(pernic=True)

print u"网卡 " ,tuple(nis)

7.  #进程  进程的各种详细参数 

import sys,psutil
def show_process(pid):
    try:
        p = psutil.Process(pid)
        p.name()  # 进程名
        # p.exe()    #进程的bin路径
        # p.cwd()    #进程的工作目录绝对路径
        p.status()  # 进程状态
        p.create_time()  # 进程创建时间
        # p.uids()    #进程uid信息
        # p.gids()    #进程的gid信息
        p.cpu_times()  # 进程的cpu时间信息,包括user,system两个cpu信息
        # p.cpu_affinity()  #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
        p.memory_percent()  # 进程内存利用率
        p.memory_info()  # 进程内存rss,vms信息
        p.io_counters()  # 进程的IO信息,包括读写IO数字及参数
        # p.connectios()   #返回进程列表
        p.num_threads()  # 进程开启的线程数
        '''
        听过psutil的Popen方法启动应用程序,可以跟踪程序的相关信息
        from subprocess import PIPE
        p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
        '''

        p.name()
        # p.username()
    except:
        pass


'''
pids=psutil.pids()
for pid in pids:
    show_process(pid)
'''

with open(r'd:\temp\test.txt', 'w') as f:
    sys.stdout = f
    for proc in psutil.process_iter():
    '''
        if proc.name() == "w3wp.exe":
            cpu_threshold=proc.cpu_percent(interval=2)/24
            print proc.name(),proc.create_time(),cpu_threshold
            p.terminate() proc .kill()
            Iterate over all ports this process is listening to
        for con in proc.get_connections():
            con
    '''
    pa = proc.as_dict()
    print(    pa.get('name'), pa.get('create_time'), pa.get('pid'), pa.get('status'), pa.get('connections'), pa.get(
        'open_files'), pa.get('cpu_percent'), pa.get('memory_percent'), pa.get('username'), pa.get('num_threads'))

print(u"当前进程:", psutil.Process(os.getpid()).cmdline())

8.  #磁盘 磁盘的使用量等等 

dps=psutil.disk_partitions()

for dp in dps:

    dp

du=psutil.disk_usage('/')

print u"硬盘总共容量 %s G"%(du.total/1024/1024/1024) 

print u"硬盘可用 %s G"%(du.free/1024/1024/1024)

print u"硬盘已用 %s %%"%(du.percent)

八、subprocess

九、pip

十、conda

 

posted @ 2019-04-28 17:27  Einewhaw  阅读(211)  评论(0编辑  收藏  举报