运行时间比较

subprocess.run() 函数参数的含义:

  • shell_command:这是要执行的命令。它可以是一个字符串,也可以是一个包含命令和参数的列表。例如,“ls -l” 或 [“ls”, “-l”]。
  • shell=True:这是一个布尔值参数,指示是否在 shell 中执行命令。如果设置为 True,则可以使用 shell 的功能,例如管道和重定向。如果设置为 False,则命令将直接在子进程中执行,而不经过 shell。
  • capture_output=True:这是一个布尔值参数,指示是否捕获命令的输出。如果设置为 True,则 stdout 和 stderr 将被捕获并作为返回值的一部分。如果设置为 False,则 stdout 和 stderr 将不会被捕获,返回值中的这两个属性将为 None。
  • text=True:这是一个布尔值参数,指示是否以文本模式处理输入和输出。如果设置为 True,则输入和输出将被视为文本,并使用默认的本地编码进行解码。如果设置为 False,则输入和输出将被视为字节流。

该函数将执行给定的命令,并返回一个 CompletedProcess 实例,其中包含命令的执行结果。返回的实例将具有以下属性:

  • args:执行的命令及其参数。
  • returncode:命令的返回码。
  • stdout:命令的标准输出。如果 capture_output 参数为 True,则此属性将包含输出内容;否则为 None。
  • stderr:命令的标准错误输出。如果 capture_output 参数为 True,则此属性将包含错误输出内容;否则为 None。
  • 此外,run() 函数还具有其他可选参数,例如 input、timeout 和 check,用于控制命令的输入、超时和错误检查行为。但在给定的代码中,这些参数没有被使用到。

import subprocess
import time
import os
from time import time
from timeit import Timer


def command(folder_path = "/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png",file_name = "999.png"):
    shell_command = f'find "{folder_path}" -name "{file_name}" -print'
    result = subprocess.run(shell_command, shell=True, capture_output=True, text=True)
    # print(repr(result.stdout)) # '/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png/999.png\n'
    # 检查返回结果
    if result.stdout.strip():
        print("文件存在")
    else:
        print("文件不存在")


def listdir(folder_path = "/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png",file_name = "9999.png"):
    file = os.listdir(folder_path)
    if file_name in file:
        print("文件存在")
    else:
        print("文件不存在")        

def pathexists(folder_path = "/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png",file_name = "9999.png"):
    file_path = os.path.join(folder_path, file_name)
    if os.path.exists(file_path):
        print("文件存在")
    else:
        print("文件不存在")

if __name__ == "__main__":
    start_time = time()
    command()
    end_time = time()
    execution_time = end_time - start_time
    print(f"程序执行时间: {execution_time}秒")  # 0.23725390434265137秒
    
    start_time = time()
    listdir()
    end_time = time()
    execution_time = end_time - start_time
    print(f"程序执行时间: {execution_time}秒")  # 0.1987314224243164秒

    start_time = time()
    pathexists()
    end_time = time()
    execution_time = end_time - start_time
    print(f"程序执行时间: {execution_time}秒") #  0.0017557144165039062秒   
    
    # t1 = Timer("command()", "from __main__ import command")
    # t2 = Timer("listdir()", "from __main__ import listdir")
    # print(t1.timeit(number=5))  # 1.405377944999941
    # print(t2.timeit(number=5))  # 1.2719782479999822
    

结论:

os.path.exists 时间少于 os.listdir 时间少于 命令行提交的command

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值