python 常用系统操作

一、监听系统目录

import os
import win32file
import datetime
import win32con

""" 
监听某目录的文件,如果文件有增删改查,则输出变动文件路径
"""

def jtwj(path_to_watch=None):
    if path_to_watch is None:
        path_to_watch = 'D:\\' # 要监听文件的路径, 默认为D盘
    ACTIONS = {
        1: "Created",
        2: "Deleted",
        3: "Updated",
        4: "Renamed from something",
        5: "Renamed to something"
    }


    FILE_LIST_DIRECTORY = win32con.GENERIC_READ | win32con.GENERIC_WRITE
    hDir = win32file.CreateFile(
        path_to_watch,
        FILE_LIST_DIRECTORY,
        win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE,
        None,
        win32con.OPEN_EXISTING,
        win32con.FILE_FLAG_BACKUP_SEMANTICS,
        None
    )

    while 1:
        results = win32file.ReadDirectoryChangesW(
            hDir,  # handle(句柄):要监视的目录的句柄。这个目录必须用 FILE_LIST_DIRECTORY 访问权限打开。 
            1024,  # size(大小): 为结果分配的缓冲区大小。
            True,  # bWatchSubtree: 指定 ReadDirectoryChangesW 函数是否监视目录或目录树。
            win32con.FILE_NOTIFY_CHANGE_FILE_NAME |
            win32con.FILE_NOTIFY_CHANGE_DIR_NAME |
            win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES |
            win32con.FILE_NOTIFY_CHANGE_SIZE |
            win32con.FILE_NOTIFY_CHANGE_LAST_WRITE |
            win32con.FILE_NOTIFY_CHANGE_SECURITY,
            None,
            None)
        for action, file in results:
            full_filename = os.path.join(path_to_watch, file)
            status = ACTIONS.get(action, "Unknown")
            print(full_filename, status)


if __name__ == '__main__':
    folders = "D:\\"
    jtwj(folders)


输出结果:D:\tools\Tools\June_2018\2018-6-6\2018-6-6.txt Updated
 

二、查询本机mac地址,本机名称,本机IP

def get_mac_name_ip(): 
    """ 获得本机计算机名称,mac地址,内网IP地址 """
    import socket,uuid
    # 获取Mac地址
    mac = uuid.UUID(int = uuid.getnode()).hex[-12:] 
    mac = ":".join([mac[e:e+2] for e in range(0,11,2)])
    #获取本机电脑名
    name = socket.getfqdn(socket.gethostname())
    #获取本机ip
    ip = socket.gethostbyname(name)
    return mac,name,ip

print(get_mac_name_ip())

输出结果:('88:d8:f6:c8:b5:d2', 'computerName', '192.168.1.18')
三,查询局域网内的计算机名称与对应的IP地址
import os
import re
import threading

"""
局域网内IP地址查询
"""

NAME_IP = {}

def get_local_name():
    n = os.popen('net view')
    n = n.read()
    n = n.split()
    name = [i.replace('\\','') for i in n if '\\' in i]
    return name

def get_local_ip(name):
    a = os.popen('ping -4 %s'%name).read()
    ip = re.findall(r'\[(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]',a)[0]
    global NAME_IP
    NAME_IP[name] = ip

def get_local():
    names = get_local_name()
    name_tdg = []
    for i in names:
        name_tdg.append(threading.Thread(target=get_local_ip,args=(i,)))
    for i in range(len(name_tdg)):
        name_tdg[i].start()
    for i in range(len(name_tdg)):
        name_tdg[i].join()
    print(NAME_IP)

if __name__ == '__main__':
    get_local()

输出结果:{'computerName': '192.168.1.18'}


    

猜你喜欢

转载自blog.csdn.net/a649344475/article/details/80808211