当前位置: 首页 > news >正文

python@调用系统命令行@os.system@subprocess@标准输入输出@sys.stdin@sys.stdout@input@print

文章目录

  • python@调用系统命令行@os.system@标准输入输出@sys.stdin@sys.stdout@input@print
    • 概要
      • os.system
        • demos
        • windows命令解释器@ComSpec
      • subprocess@recommended🎈
        • 基本用法
        • demos
    • 标准输入输出
      • sys.stdin
      • input()
      • sys.stdin.input@input()
        • 交互模式
        • 小结
      • sys.stdout
      • sys.stdout.wirte()@print()
      • 从文件读取@fileinput
        • fileinput.input()@从文件输入内容
        • 命令行参数提供文件名
    • 小结

python@调用系统命令行@os.system@标准输入输出@sys.stdin@sys.stdout@input@print

概要

  • 在Python中,可以使用os.system函数来执行操作系统命令。

  • 该函数接受一个字符串参数,该字符串是要执行的命令。例如,要在Windows系统中执行dir命令,可以使用以下代码:

    • import os
      os.system('dir')
      
    • 在Linux或MacOS系统中,可以使用ls命令代替dir命令。os.system函数会在一个新的子进程中执行命令,并等待命令执行完成后返回。如果命令执行成功,os.system函数返回0,否则返回一个非零值。

  • 需要注意的是,os.system函数的安全性不太好,因为它可以执行任意的系统命令。如果要执行的命令包含用户输入的内容,需要谨慎处理,以避免命令注入等安全问题。

  • 为了提高安全性,可以使用subprocess模块来代替os.system函数,该模块提供了更多的选项来控制命令的执行环境和参数。例如,以下代码使用subprocess模块来执行ls命令,并获取命令输出:

    • import subprocessresult = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
      print(result.stdout.decode('utf-8'))
      
    • 该代码会执行ls -l命令,并将输出存储在result变量中。

    • subprocess.run函数接受一个列表参数,该列表包含要执行的命令和参数。stdout=subprocess.PIPE参数可以将命令输出重定向到一个管道中,而result.stdout.decode('utf-8')可以将管道中的输出转换为字符串并打印出来。

os.system

  • os.system()

  • Execute the command (a string) in a subshell. This is implemented by calling the Standard C function system(), and has the same limitations. Changes to sys.stdin, etc. are not reflected in the environment of the executed command. If command generates any output, it will be sent to the interpreter standard output stream. The C standard does not specify the meaning of the return value of the C function, so the return value of the Python function is system-dependent.

  • On Unix, the return value is the exit status of the process encoded in the format specified for wait().

  • On Windows, the return value is that returned by the system shell after running command. The shell is given by the Windows environment variable COMSPEC: it is usually cmd.exe, which returns the exit status of the command run; on systems using a non-native shell, consult your shell documentation.

  • The subprocess module provides more powerful f acilities for spawning new processes and retrieving their results; using that module is preferable to using this function. See the Replacing Older Functions with the subprocess Module section in the subprocess documentation for some helpful recipes.

    On Unix, waitstatus_to_exitcode() can be used to convert the result (exit status) into an exit code. On Windows, the result is directly the exit code.

    Raises an auditing event os.system with argument command.

  • os.system函数是Python标准库中的一个函数,用于在子shell中执行一个命令字符串。该函数会调用操作系统底层的system()函数来实现命令的执行,因此在不同操作系统下其行为可能有所不同。

  • 在Unix系统中,os.system函数的返回值是被执行命令的退出状态,该退出状态被编码为wait()函数指定的格式。

  • 在Windows系统中,os.system函数的返回值是由系统shell返回的,通常是cmd.exe,该值取决于执行的命令。

  • 需要注意的是,os.system函数的返回值在不同操作系统下的具体含义可能不同,因此在编写跨平台脚本时需要谨慎处理。此外,os.system函数的安全性不太好,因为它可以执行任意的系统命令。如果要执行的命令包含用户输入的内容,需要谨慎处理,以避免命令注入等安全问题。

  • 为了提高安全性和灵活性,可以使用subprocess模块来代替os.system函数。

  • subprocess模块提供了更多的选项来控制命令的执行环境和参数,并且可以方便地获取命令的输出和错误信息。例如,以下代码使用subprocess模块来执行ls命令,并获取命令输出:

    import subprocessresult = subprocess.run(['ls', '-l'], capture_output=True, text=True)
    print(result.stdout)
    

    该代码会执行ls -l命令,并将输出存储在result变量中。capture_output=True参数可以将命令输出捕获到result.stdout中,而text=True参数可以将输出以字符串的形式返回。最终输出的是ls -l命令的输出。

demos

  • 下面是一个使用os.system()函数的简单示例,该示例执行一个命令行命令,打印出当前目录下的所有文件和子目录:

    import osimport platform# 获取操作系统名称
    os_name = platform.system()
    # 执行命令ls="dir" if os_name=='Windows' else "ls"
    res= os.system(ls) # 打印执行结果的状态码
    print("os.system(ls) 执行结果状态码:", res)
    res1=os.system("rasie_")
    print(res1)#执行了不存在的命令rasie_,状态码非0
    

    在这个例子中,我们首先导入了os模块,然后调用os.system()函数,将命令行命令dir传递给它。这个命令会在命令行中列出当前目录下的所有文件和子目录。

    然后,我们使用os.system()函数来执行这个命令,并将执行结果的状态码打印出来。在Windows系统中,如果执行成功,dir命令会返回0,否则会返回其他的值。我们可以通过打印状态码来判断命令是否执行成功。

    需要注意的是,os.system()函数返回的状态码是一个整数值,而不是一个字符串。如果需要将状态码转换为字符串或其他格式,需要使用相应的转换函数或方法。

windows命令解释器@ComSpec

  • ComSpec是"Command Specification"的缩写,指的是Windows操作系统中的一个环境变量,用于指定默认的命令行解释器。
  • 在Windows系统中,当需要执行一个命令行命令时,系统会首先查找ComSpec环境变量,并使用该变量指定的命令行解释器来执行命令。
  • 默认情况下,ComSpec环境变量的值为C:\Windows\System32\cmd.exe,即Windows的标准命令提示符。但是,用户可以通过修改ComSpec环境变量的值,来使用其他的命令行解释器,例如Windows PowerShell等。
  • ComSpec环境变量在Windows系统中起着重要的作用,因为许多应用程序和脚本都需要使用命令行解释器来执行操作。通过使用ComSpec环境变量,可以确保这些应用程序和脚本在任何Windows系统中都可以正常工作,而无需考虑系统中安装的命令行解释器是哪个。

subprocess@recommended🎈

  • subprocess — Subprocess management — Python 3.11.2 documentation

  • The subprocess module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older modules and functions:

    os.system
    os.spawn*
    
  • Information about how the subprocess module can be used to replace these modules and functions can be found in the following sections.

基本用法

  • subprocess是Python标准库中的一个模块,提供了更高级、更安全的执行外部命令的方法,比os.system()函数更加灵活。subprocess模块可以执行命令、获取命令的输出、控制命令的输入和输出、等待命令执行完成等操作。

    下面是subprocess模块的一些常用函数和方法:

    • subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, timeout=None, check=False, encoding=None, errors=None, env=None, cwd=None, text=None, start_new_session=False):执行一个命令,并等待命令执行完成。返回一个CompletedProcess对象,其中包含命令的执行结果。args参数可以是一个字符串,也可以是一个列表或元组,表示要执行的命令和参数。
    • subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=None, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, group=None, extra_groups=None, user=None, initgroups=True):启动一个新的进程,并返回一个Popen对象,其中包含该进程的信息和控制方法。args参数的含义与subprocess.run()函数相同。
    • subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None, encoding=None, errors=None, env=None, cwd=None, text=None, start_new_session=False):执行一个命令,并等待命令执行完成。如果命令的返回值为0,则返回None,否则会抛出CalledProcessError异常。args参数的含义与subprocess.run()函数相同。
    • subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, timeout=None, encoding=None, errors=None, universal_newlines=None, cwd=None, text=None, start_new_session=False):执行一个命令,并返回命令的输出结果。如果命令的返回值不为0,则会抛出CalledProcessError异常。args参数的含义与subprocess.run()函数相同。

demos

下面是subprocess模块的一些示例代码,演示了如何使用不同的函数和方法执行外部命令:

  • 使用subprocess.run()函数执行一个简单的命令,打印当前目录的路径:

    • import subprocessresult = subprocess.run(["pwd"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
      print(result.stdout.decode("utf-8"))
      
    • 在这个例子中,我们调用subprocess.run()函数执行pwd命令,该命令会打印当前目录的路径。stdout=subprocess.PIPE参数表示我们希望获取命令的标准输出,stderr=subprocess.PIPE参数表示我们希望获取命令的错误输出。result.stdout.decode("utf-8")语句将获取到的标准输出转换为字符串,并打印出来。

  • 使用subprocess.Popen()函数执行一个命令,并向其输入数据:

  • import subprocess# 启动一个命令行进程
    p = subprocess.Popen(["cat"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)# 向进程输入数据
    p.stdin.write(b"hello\n")
    p.stdin.write(b"world\n")
    p.stdin.close()# 从进程读取输出
    output = p.stdout.read()# 打印输出
    print(output.decode("utf-8"))
    

在这个例子中,我们使用subprocess.Popen()函数启动了一个cat命令的进程,并将其标准输入和输出重定向到stdinstdout。我们向该进程输入了两行数据,然后关闭了标准输入。最后,我们从进程的标准输出中读取数据,并将其打印出来。

  1. 使用subprocess.check_call()函数执行一个命令,检查其返回值:
import subprocess# 执行一个命令,检查其返回值
subprocess.check_call(["ls", "-l"])

标准输入输出

  • Take input from stdin in Python - GeeksforGeeks

  • stdinstdout是计算机中常见的输入输出流。在Unix和类Unix系统(如Linux)中,一切都是文件,包括标准输入、输出和错误输出。在Windows系统中,也有类似的概念,但是实现方式略有不同。

  • stdin代表标准输入流,通常用于从控制台或者其他程序读取输入。在Python中,可以使用sys.stdin对象来访问标准输入流。例如,以下代码使用sys.stdin对象来读取用户输入的字符串:

    import sysinput_str = sys.stdin.readline()
    print(input_str)
    

    该代码使用sys.stdin.readline()函数从标准输入流中读取一行字符串,并将其存储在input_str变量中。然后,将该字符串输出到标准输出流中。需要注意的是,sys.stdin对象默认使用缓冲区,因此在读取输入之前可能需要先刷新缓冲区。

  • stdout代表标准输出流,通常用于向控制台或者其他程序输出信息。在Python中,可以使用print()函数将信息输出到标准输出流中。例如,以下代码使用print()函数输出一行字符串到标准输出流中:

    print('Hello, world!')
    

    该代码会将字符串'Hello, world!'输出到标准输出流中。需要注意的是,print()函数默认会在输出字符串末尾添加一个换行符,如果不希望添加换行符,可以使用end参数来指定输出末尾的字符。

    总之,stdinstdout是计算机中常见的输入输出流,用于在程序和外界之间传递信息。在Python中,可以使用sys.stdinprint()函数来访问标准输入和输出流。

  • 标准输入流(stdin)通常用于从外部环境中读取输入。例如,在命令行程序中,用户可以通过键盘向程序输入数据,这些数据就会通过标准输入流传递到程序中。标准输出流(stdout)通常用于向外部环境输出信息。例如,在命令行程序中,程序可以通过标准输出流将结果输出到控制台中,供用户查看。

    在Python中,可以使用sys.stdinsys.stdout对象来访问标准输入输出流。sys.stdin对象表示标准输入流,可以通过该对象的readline()方法从标准输入中读取一行文本。例如,以下代码从标准输入中读取一行文本,并将其输出到标准输出中:

    import sysinput_str = sys.stdin.readline()
    sys.stdout.write(input_str)
    
  • 该代码首先使用sys.stdin.readline()方法从标准输入流中读取一行文本,并将其存储在input_str变量中。然后,使用sys.stdout.write()方法将该文本输出到标准输出流中。

  • 需要注意的是,在使用标准输入输出流时,需要根据具体的操作系统和环境来调整相关设置。例如,在一些特殊情况下,可能需要禁用缓冲区,以避免输出延迟。在Python中,可以使用sys.stdout.flush()方法来刷新标准输出流的缓冲区,以确保输出立即生效。

    总之,标准输入输出是计算机操作系统中的重要概念,用于表示程序与外部环境之间的输入输出流。在Python中,可以使用sys.stdinsys.stdout对象来访问标准输入输出流,以实现与外部环境的交互。

sys.stdin

  • # stdin_demo.py
    import sysfor line in sys.stdin:if 'q' == line.rstrip():breakprint(f'Input : {line}')print("Exit")
    • (d:\condaPythonEnvs\tf210) PS C:\Users\cxxu\ser\testers> py .\stdin_demo.py 
      1
      Input : 12
      Input : 2q
      Exit
      

input()

  • # input_demo.py
    inp = input("Type anything:")# prints inp
    print(inp)
(d:\condaPythonEnvs\tf210) PS C:\Users\cxxu\ser\testers> py .\input_demo.py
Type anything:123
123

sys.stdin.input@input()

  • # stdin_readline_demo.py
    # Python program to demonstrate
    # sys.stdin.readline()import sys
    print("read string:")
    name = sys.stdin.readline()
    print(repr(name),type(name))#可以控制读入的字符数
    print("read 2 digit:")
    num = sys.stdin.readline(2)
    print(num,type(num))
    # 比较input()
    line=input("read by input():")
    print(repr(line),type(line))
  • (d:\condaPythonEnvs\tf210) PS D:\repos\CCSER\emotion-recognition-using-speech\testers> py .\stdin_readline_demo.py
    read string:
    cxxu
    'cxxu\n' <class 'str'>
    read 2 digit:
    123
    12 <class 'str'>
    read by input():cxxu
    'cxxu' <class 'str'>
    

交互模式

  • (d:\condaPythonEnvs\tf210) PS C:\Users\cxxu\ser\testers> py
    Python 3.9.16 (main, Mar  8 2023, 10:39:24) [MSC v.1916 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> name = sys.stdin.readline()
    cxxu
    >>> print(name,type(name))
    cxxu<class 'str'>
    >>> len(name)
    5
    >>> num=sys.stdin.readline()
    123
    >>> num
    '123\n'
    >>> name=sys.stdin.readline()
    cxxu>>> name
    'cxxu\n'
    >>> print(name+"tailing")
    cxxu
    tailing
    >>> name+"tailing"       
    'cxxu\ntailing'
    
  • 可以看到,使用print()打印出来的内容会将\n作为换行效果显示出来

小结

  • input()函数和sys.stdin.readline()方法都可以用于从标准输入流中读取一行文本(字符串)。在大多数情况下,这两种方法的功能是相似的,可以互相替代。

  • 但是,它们还是有一些区别的:

  • input()函数自动去除读取到的字符串中的末尾换行符,而sys.stdin.readline()方法不会自动去除换行符。这意味着,如果使用sys.stdin.readline()方法读取一行文本,需要手动去除字符串末尾的换行符。

    例如,以下代码使用input()函数读取一行文本,并输出该文本的长度:

    input_str = input()
    print(len(input_str))
    

    该代码会从标准输入流中读取一行文本,自动去除末尾的换行符,并输出该文本的长度。

    而以下代码使用sys.stdin.readline()方法读取一行文本,需要手动去除字符串末尾的换行符:

    import sysinput_str = sys.stdin.readline().rstrip('\n')
    print(len(input_str))
    

    该代码会从标准输入流中读取一行文本,然后使用rstrip('\n')方法去除字符串末尾的换行符,并输出该文本的长度。

  • input()函数会将读取到的字符串进行解析,返回一个Python对象,而sys.stdin.readline()方法则直接返回一个字符串。这意味着,如果需要将读取到的字符串转换为其他类型的Python对象(如整数或浮点数),则需要使用input()函数比较放便。

    例如,以下代码使用input()函数读取一个整数,并输出该整数的平方:

    input_num = int(input())
    print(input_num ** 2)
    

    该代码会从标准输入流中读取一个整数,将其转换为整数类型,然后输出该整数的平方。

    而以下代码使用sys.stdin.readline()方法读取一个整数,并需要手动将其转换为整数类型:

    import sysinput_num = int(sys.stdin.readline().rstrip('\n'))
    print(input_num ** 2)
    

    该代码会从标准输入流中读取一个字符串(包括末尾的换行符),然后使用rstrip('\n')方法去除字符串末尾的换行符,并将其转换为整数类型,然后输出该整数的平方。

    总之,input()函数和sys.stdin.readline()方法都可以用于从标准输入流中读取一行文本,但是在使用它们时需要根据具体情况选择适合的方法,并注意它们的区别。

sys.stdout

  • # stdin_out.py
    import sysprint("使用stdin.readline()读取输入(从命令行读取输入):")
    input_str = sys.stdin.readline()
    print("<<<<<<<<<<")
    print("使用repr检查换行符等转义字符",repr(input_str))
    print("使用sys.stdout.write()将内容写出到终端:")
    sys.stdout.write(repr(input_str))#不同于print()不会追加换行
    print("<<<<<<<<<<")
    • (d:\condaPythonEnvs\tf210) PS C:\Users\cxxu\ser\testers> py .\stdin_out.py
      使用stdin.readline()读取输入(从命令行读取输入):
      123
      <<<<<<<<<<
      使用repr检查换行符等转义字符 '123\n'
      使用sys.stdout.write()将内容写出到终端:
      '123\n'<<<<<<<<<<
      

sys.stdout.wirte()@print()

  • sys.stdout.write()方法和print()函数都可以用于向标准输出流中输出信息。但是,它们在输出方式和输出效果上有一些区别。

    1. 输出方式:sys.stdout.write()方法需要手动添加换行符,而print()函数会在输出结束后自动添加换行符。

    例如,以下代码使用sys.stdout.write()方法输出一行文本,并手动添加换行符:

    import syssys.stdout.write('Hello, world!\n')
    

    该代码会向标准输出流中输出字符串'Hello, world!',并手动添加一个换行符。

    而以下代码使用print()函数输出一行文本,无需手动添加换行符:

    print('Hello, world!')
    

    该代码会向标准输出流中输出字符串'Hello, world!',并自动添加一个换行符。

    1. 输出效果:sys.stdout.write()方法输出的文本可以与其他输出保持在同一行,而print()函数输出的文本会自动换行,与其他输出分开。

    例如,以下代码使用sys.stdout.write()方法输出两个字符串,在同一行中显示:

    import syssys.stdout.write('Hello, ')
    sys.stdout.write('world!\n')
    

    该代码会向标准输出流中输出字符串'Hello, '和字符串'world!',并在它们之间没有换行符,输出结果为'Hello, world!\n'

    而以下代码使用print()函数输出两个字符串,在不同行中显示:

    print('Hello, ')
    print('world!')
    

    该代码会向标准输出流中输出字符串'Hello, '和字符串'world!',并在它们之间自动添加一个换行符,输出结果为:

    Hello, 
    world!
    

    总之,sys.stdout.write()方法和print()函数都可以用于向标准输出流中输出信息,但是在使用它们时需要根据具体情况选择适合的方法,并注意它们的输出方式和输出效果。

从文件读取@fileinput

  • fileinput — Iterate over lines from multiple input streams — Python 3.11.2 documentation

fileinput.input()@从文件输入内容

  • 如果是单个文件,可以使用open函数:open()

  • 如果是多个文件,可以使用fileinput.input函数

  • #构造两个简单文件:
    echo "f1 file">f1
    echo "f2 file">f2
    
  • # fileinput_demo.py
    import fileinputwith fileinput.input(files=('f1', 'f2')) as f:# python3.10后支持encoding等参数for line in f:# process(line)print(line)
  • (d:\condaPythonEnvs\tf210) PS C:\Users\cxxu\ser\testers> py .\fileinput_demo.py
    f1 filef2 file	
    

命令行参数提供文件名

  • # fileinput_cli.py
    import fileinput
    import sys
    print(sys.argv)
    for f in fileinput.input():print(f)
  • (d:\condaPythonEnvs\tf210) PS C:\Users\cxxu\ser\testers> py .\fileinput_cli.py f1 f2
    ['.\\fileinput_cli.py', 'f1', 'f2']
    f1 filef2 file
    

小结

  • 总之,虽然os.system函数可以方便地执行简单的命令,但在编写复杂脚本时建议使用更安全和灵活的subprocess模块。

相关文章:

python@调用系统命令行@os.system@subprocess@标准输入输出@sys.stdin@sys.stdout@input@print

文章目录python调用系统命令行os.system标准输入输出sys.stdinsys.stdoutinputprint概要os.systemdemoswindows命令解释器ComSpecsubprocessrecommended&#x1f388;基本用法demos标准输入输出sys.stdininput()sys.stdin.inputinput()交互模式小结sys.stdoutsys.stdout.wirte(…...

手握数据智能密钥,诸葛智能打开数字化经营“三重门”

科技云报道原创。 如果说上世纪传统麦迪逊大街上的“广告狂人”吸金立足之本&#xff0c;还主要是基于“Big Idea”的话&#xff0c;那么在当下&#xff0c;数据正在成为企业营销和运营的金矿。 这是一个“人与机器共同进化”的时代&#xff0c;技术作为延伸人类感觉的媒介之…...

C语言可以实现各种滤波算法

C语言可以实现各种滤波算法&#xff0c;以下是一些常见的滤波算法&#xff1a; 均值滤波&#xff08;Mean Filter&#xff09;&#xff1a;将图像中每一个像素周围一定区域内的灰度值取平均值作为该像素的新灰度值&#xff0c;用于去除高斯噪声等随机噪声。 下面是一个简单的 C…...

使用Netty,当然也要了解它的连接闲置处理

连接闲置网络连接的闲置指的是当前网络连接处于空闲状态&#xff0c;即没有正在进行的数据传输或通信活动。当我们的某个连接不再发送请求或者接收响应的时候&#xff0c;这个连接就开始处于闲置状态。网络连接的闲置时间越长&#xff0c;说明该连接越不活跃。此时&#xff0c;…...

2、K-Planes

运行配置 主页&#xff1a;https://sarafridov.github.io/K-Planes/ 代码&#xff1a;https://github.com/sarafridov/K-Planes 预训练权重&#xff1a;https://drive.google.com/drive/folders/1zs_folzaCdv88y065wc6365uSRfsqITH Neural_3D_Video_Dataset&#xff1a;htt…...

张文海教授课题组在国际高水平期刊《Cerebral Cortex》发表研究成果

调节悲伤情绪对于维持伴侣间的浪漫关系至关重要。人际情绪调节策略包括情感参与&#xff08;AE&#xff09;和认知参与&#xff08;CE&#xff09;&#xff0c;这两种策略在浪漫关系中效用如何&#xff1f;它们是如何通过情感纽带调节伴侣情绪的&#xff1f;其背后的脑际神经互…...

ffmpeg4.1 源码学习之-转封装

前言 ffmpeg 的源码量非常的多&#xff0c;而且非常繁杂&#xff0c;非常多的函数&#xff0c;如果一个函数一个函数看的话要花费比较多的时间。所以本文通过跟踪ffmpeg转封装的过程来学习ffmpeg的源码具体转封装的命令&#xff1a;ffmpeg -i 1_cut.flv -c copy -f mp4 1.mp4在…...

ChatGPT写作文章-快速使用ChatGPT不用注册方式

如何更好地使用ChatGPT批量生成文章&#xff1a;详细教程 作为一款强大的文本生成器&#xff0c;ChatGPT可以帮助您快速、高效地批量生成文章。但如果您还不知道如何更好地使用ChatGPT&#xff0c;那么这篇详细的列表教程将会指导您如何使用它来生成高质量的文章&#xff0c;提…...

Nginx配置ip白名单(服务权限控制)

Nginx服务器权限控制&#xff1a;Nginx 是一款高性能的 HTTP 和反向代理服务器。它可以通过配置文件实现权限控制&#xff0c;从而限制或允许特定的 IP 地址、网络或用户访问指定的资源。这里是一些基本的 Nginx 权限控制方法&#xff1a; 1. 基于 IP 地址的访问控制 在 Ngin…...

Vue 核心(二)

文章目录Vue 核心&#xff08;二&#xff09;八、 绑定样式1、 class2、 style九、 条件渲染1、 渲染指令2、 使用示例十、 列表渲染1、 基本语法2、 key原理3、 列表过滤4、 列表排序5、 数组更新检测6、 大总结十一、 收集表单数据十二、 内置指令1、 v-text2、 v-html3、 v-…...

犯罪现场还原虚拟vr训练平台突破各种教学限制

在当今社会矛盾日益凸显、各式犯罪层出不穷的背景下&#xff0c;创新改革公安院校实战化教学方式&#xff0c;强化对基层公安队伍实战化应用型人才的供给能力具有重要性、紧迫性。 案件现场勘查是门技术活&#xff0c;如何让民警快速有效提升技能、服务实战? 常规刑侦专业现场…...

LeetCode 617. 合并二叉树 | C++语言版

LeetCode 617. 合并二叉树 | C语言版LeetCode 617. 合并二叉树题目描述解题思路思路一&#xff1a;使用递归代码实现运行结果参考文章&#xff1a;思路二&#xff1a;减少遍历节点数代码实现运行结果参考文章&#xff1a;LeetCode 617. 合并二叉树 题目描述 题目地址&#xf…...

Python量化交易08——利用Tushare获取日K数据

总有同学问我要数据...很多第三方接口都能直接获取数据的&#xff0c;本次介绍怎么用Tushare库获取A股日k线行情的数据。 Tushare有两个版本&#xff0c;老版现在快弃用了。 新版的官网链接在这&#xff1a;Tushare数据 需要注册一个账号&#xff0c;然后改一下资料&#xff0…...

30张精美可视化大屏,无需代码直接套用,解决你95%的大屏需求!

通常制作可视化大屏&#xff0c;一般有两种方式 代码开发&#xff1a;写代码调用数据和图表库&#xff0c;比如写JSEcharts &#xff1b; 可视化工具&#xff1a;用现成的数据可视化工具 前者简单直接&#xff0c;直接写代码就完事。但对于大部分人来说门槛较高&#xff0c;维…...

TCP网络事件模型的封装1.0

TCP网络模型的封装 最近学习了TCP网络模型的封装&#xff0c;其中运用的封装技术个人感觉有点绕 在反复读代码、做思维导图下初步理解了这套封装模型&#xff0c;不禁感叹原来代码还能这样写&#xff1f;神奇&#xff01; 为此将源码分享出来并将流程图画出&#xff0c;方便…...

NC271.二叉搜索树的后序遍历序列

文章目录一、题目描述二、示例三、主要思路一、题目描述 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 提示&#xff1a; 1.二叉搜索树是指父亲节点大于左子树中…...

研究fastdds v2.8.0 1之 基础模块

阅读 dds 协议 1.4 版本 &#xff0c; 结合fastdds 2.8 的代码理解dds。 Entity 理解 DCPS基础设施模块由以下类组成&#xff1a; Entity DomainEntity QosPolicy Listener Status WaitSet Condition GuardCondition StatusCondition1、Entity 是所有DCPS 对象的基础类 virt…...

ElasticSearch系列 - SpringBoot整合ES:精确值查询 term

文章目录01. ElasticSearch term 查询&#xff1f;02. ElasticSearch term 查询数值型数据&#xff1f;03. ElasticSearch term 查询字符串类型数据&#xff1f;04. ElasticSearch term 查询日期型数据&#xff1f;05. ElasticSearch term 查询日期型数据的注意事项&#xff1f…...

关于async/await、promise和setTimeout执行顺序

关于async/await、promise和setTimeout执行顺序 async function async1() {console.log(async1 start);await async2();console.log(asnyc1 end); } async function async2() {console.log(async2); } console.log(script start); setTimeout(() > {console.log(setTimeOut…...

2023-03-31:如何计算字符串中不同的非空回文子序列个数?

2023-03-31&#xff1a;给定一个字符串 s&#xff0c;返回 s 中不同的非空 回文子序列 个数&#xff0c; 通过从 s 中删除 0 个或多个字符来获得子序列。 如果一个字符序列与它反转后的字符序列一致&#xff0c;那么它是 回文字符序列。 如果有某个 i , 满足 ai ! bi &#xff…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...