• Python简单源码解析


    主要为一些简单的源代码的解析以及一些方法的理解。

    • 说明:这些文件都不是我写的,详情可参考Github上的内容

    • 批量修改文件类型

        def batch_rename(work_dir, old_ext, new_ext):
            for filename in os.listdir(work_dir):
                file_ext = os.path.splitext(filename)[1]
                if file_ext == old_ext:
                    newfile = filename.replace(old_ext,new_ext)
                    os.rename(os.path.join(work_dir,file_ext ),os.path.join(work_dir,new_ext))
    
    1. os.listdir():列出当前目录下的所有文件,为文件的名称,而不是包含路径的名称,同样不包含子目录内的文件;
    2. os.path.splitext():分割文件,分为文件名和文件类型。文件类型为最后一个.和后缀名,文件名称为最后一个.前的所有内容。
    3. replace():字符串替换
    4. os.path.join():用组合的方式将文件路径和文件名称组合为绝对路径。不同的系统添加的内容不一样。和join一样,但功能特殊化。
    5. os.rename():修改文件名。
    • 新建文件夹
        def New_Folder(work_dir,Folder_name):
            if not os.path.exists(os.path.join(work_dir,Folder_name)):
                os.makedirs(os.path.join(work_dir,Folder_name))
    
        def New_Folder(Folder_name):
            if not os.path.exists(Folder_name)):
                os.makedirs(Folder_name)
    
    1. os.path.exists():判断文件夹是否存在
    2. os.makedirs():新建文件夹
    • 获取文件信息
    import os
    import stat
    import time
    
    def get_fileInfo(filename):
        file_stats = os.stat(filename)
        file_info = {
            "fname":filename,
            "fmode":file_stats[stat.ST_MODE],
            "fsize":file_stats[stat.ST_SIZE],
            "f_lm":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_MTIME])),
            "f_la":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_ATIME])),
            "f_ct":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_CTIME]))
            }
        return file_info;
    
    if __name__ == "__main__":
        filename = input("Please input you file:")
        fileinfo = get_fileInfo(filename)
        print(fileinfo)
        if stat.S_ISDIR(fileinfo["fmode"]):
            print("Folder")
        else:
            print("filename :%(fname)s" % fileinfo)
    
    1. os.stat():获取文件的系统状态信息,返回一个系统状态信息的元组。

    2. stat模块

    3. time.localtime():格式化时间,输入为sec(秒)

    4. 针对字典的格式化输出,有两种方式:

      a. print("%(fname)s" % file_info)
      b. print("%s" % file_info["fname"])

    5. time.strftime():将当前时间格式化为字符串。

    6. stat.S_ISDIR():判断是否为目录,同样还有其他的文件类型。

    • 计算文件夹大小
    def folder_size(folder_name):
        fold_size = 0
        for (path,dirs,files) in os.walk(folder_name):
            for file in files:
                filename = os.path.join(path,file)
                fold_size += os.path.getsize(filename)
        return fold_size
    
    1. os.walk():遍历文件夹,其中遍历为广度优先遍历。即,先遍历当前的文件夹,一步一步深入遍历,同时,根据参数不同遍历的方式也不同。

      a. path为当前的路径。

      b. dirs为当前路径是否包含子目录,没有为[]

      c. files为当前路径的文件列表。

    2. os.path.getsize():获取文件大小。

    • 将某一类型文件压缩
    import os
    from time import strftime
    
    def zip_files(filedir,fileend,zip_prog):
        for files in os.listdir(filedir):
            if files.endswith(fileend):
                files1 = files + "." + strftime("%y-%m-%d") + ".zip"
                os.chdir(filedir)
                os.popen(zip_prog + " " + files1 + " " + files)
    
    #zip_prog = "zip.exe"
    
    1. zip.exe:压缩程序
    2. os.popen():调用exe,其中的参数和cmd参数一样,需要用空格区分,并且程序执行的目录页需要切换正确,不然会导致程序假执行的状态。
    3. os.chdir():切换工作目录
    4. files.endswith():判断后缀方法。
    5. from time import strftime:导入某个某块的某一部分,避免全部导入。
    6. os.system()和os.popen()虽然效果一样,但两者存在区别。明显的一点是,os.system和os.popen的返回结果已经执行效果并不相同。
    • 遍历检查DNS服务
    import subprocess
    
    file_Test = input("File In:")
    file_Out = input("File Out:")
    
    fileout = open(file_Out ,"w");
    
    for server in open(file_Test ):
        subprocess.Popen(("nslookup" + " " + server ),stdout = fileout )
    fileout.close()
    
    1. 详情参考subprocess.Popen()中的参数设定。
    2. nslookup命令参数,详情可nslookup /?(windows)
    3. stdout标准输出,将执行结果写入到file_out文件中。
    4. 写文件最后记得关闭文件。
  • 相关阅读:
    FIREDAC操作SQLITE内存数据库
    DELPHI移动端支付宝支付
    DELPHI支付宝支付代码
    DELPHI微信支付代码
    mssql内存表
    Ubuntu下添加开机启动项的2种方法
    docker容器中安装vim
    使用find命令查找Linux中的隐藏文件的方法
    Go语言_RPC_Go语言的RPC
    Mac下export生效
  • 原文地址:https://www.cnblogs.com/ply616/p/5795256.html
Copyright © 2020-2023  润新知