当前位置: 首页 > 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模块。

相关文章:

【driver2】设备读写,同步和互斥,ioctl,进程休眠,时间和延时,延缓

文章目录 1.实现设备读写&#xff1a;write函数中一个进程写没问题&#xff0c;两进程写&#xff1a;第一个进程运行到kzalloc时&#xff0c;第二个进程也执行了kzalloc&#xff0c;只第二个进程地址保存在c中&#xff0c;第一个进程分配内存空间地址丢失造成内存泄漏。第一个进…...

android TV app适配遥控器思路,recycleview选中放大

背景&#xff1a; 1、当遥控器遥控盒子&#xff0c;app内是有一套机制&#xff0c;响应遥控器的操作; 2、要实现遥控器选中的效果&#xff0c;必须要设置setOnFocusChangeListener方法&#xff0c;另外一个就是设置view的setOnClickListener方法&#xff1b;设置完之后&#…...

韩顺平0基础学Java——第4天

p45—p71 老天鹅&#xff0c;居然能中断这么久&#xff0c;唉...学不完了要 API API:application programing interface应用程序编程接口 www.matools.com 可以理解成Python的调包...c的头文件对吧 字符型 char用单引号 String用双引号 char本质上是个整数&#xff0c…...

numpy常用方法

numpy 在线工具网 - 各类免费AI工具合集&#xff0c;免费pdf转word等 https://orcc.online import numpy as np# 生成数组 X np.array([[1, 2], [3, 4]])# 数组的维度 一般为二维数组 X.ndim# 数组的形状 [row, column] X.shape# 生成空数组 X np.empty(X.shape)# 将数组拼…...

nature《自然》期刊文献怎么在家查看下载

nature《自然》期刊我们都知道&#xff0c;是世界上历史悠久的、最有名望的科学杂志之一。下载该期刊文献是需要使用权限的&#xff0c;如果你没有nature《自然》期刊的资源&#xff0c;又该如何获取呢&#xff1f;请看本文的经验分享。 一、先百度“文献党下载器” 在文献党下…...

网络工程师必备:静态路由实验指南

大家好&#xff0c;这里是G-LAB IT实验室。今天带大家学习一下华为静态路由实验配置 01、实验拓扑 02、实验需求 1.R1环回口11,1,1.1模拟PC1 2.R2建立2个环回口模拟Server server-1: 22,1,1.1 server-2: 44.1.1.1 3.要求使用静态路由实现全网互通 PC1去往server-1从R3走…...

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(…...

15-哈希表

哈希表&#xff08;Hash table&#xff09;&#xff0c;也称散列表&#xff0c;是一个能够将数值映射而成地址从而进行直接访问的数据结构&#xff0c;通过哈希表我们可以快速、迅捷地访问数据。 哈希表原理 假设我们拥有一个数x&#xff08;也称关键值&#xff0c;key&#…...

【超详细文件操作(三)】C语言

作者&#xff1a;日出等日落 专栏&#xff1a;C语言 只有流过血的手指&#xff0c;才能弹出世间的绝唱。 ——泰戈尔 目录 1.文件的随机读写 1.1 fseek函数 1.1.1 下面使用fseek函数 1.2 ftell函数 1.3 rewind函数 …...

【数据分析之道-基础知识(四)】字典

文章目录专栏导读1、字典简介2、字典创建3、字典访问4、字典修改5、字典添加6、字典删除7、字典内置函数专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN Python领域新星创作者&#xff0c;专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》&#xff0c;本专栏…...

【计组】RAM的深入理解

一、存储机理 RAM的实现逻辑有种&#xff0c;分别是触发器和电容。 SRAM&#xff08;Static&#xff09;DRAM&#xff08;Dynamic&#xff09;存储方式触发器电容破坏性读出否&#xff08;触发器具有稳态&#xff0c;能够锁住0或1两种状态&#xff09;是&#xff08;电容需要…...

51单片机学习笔记_13 ADC

ADC 使得调节开发板上的电位器时&#xff0c;数码管上能够显示 AD 模块 采集电位器的电压值且随之变化。 开发板上有三个应用&#xff1a;光敏电阻&#xff0c;热敏电阻&#xff0c;电位器。 一般 AD 转换有多个输入&#xff0c;提高使用效率。 ADC 通过地址锁存与译码判断采…...

JVM 常量池

Class文件常量池 每个Class文件都会有一个单独的常量池,我们称为Class文件常量池,我们可以用javap命令反汇编Class文件,可以查看java编译器为我们生成的字节码。 CLass文件常量池存下内容&#xff1a; 字面量&#xff1a; 文本字符串(代码中用双引号包裹的字符串部分的值)被…...

Leetcode.1024 视频拼接

题目链接 Leetcode.1024 视频拼接 Rating &#xff1a; 1746 题目描述 你将会获得一系列视频片段&#xff0c;这些片段来自于一项持续时长为 time秒的体育赛事。这些片段可能有所重叠&#xff0c;也可能长度不一。 使用数组 clips描述所有的视频片段&#xff0c;其中 clips[i…...

彩色滤镜阵列CFA与Bayer滤镜

彩色滤镜阵列&#xff08;CFA&#xff09; 在彩色光电摄影中&#xff0c;可以通过分光&#xff0c;使用三个传感器分别捕获红、绿、蓝三个通道的颜色分量。但为了降低成本&#xff0c;绝大部分成像系统中采用单芯片 CMOS、CCD 传感器结合彩色滤镜阵列(Color Fiter Array&#…...

Unity和GAN实现AI绘画五等分的新娘、国家队02(附源码)

UnityGAN实现AI绘画五等分的新娘、国家队02附源码写在前面源码演示视频部分界面展示使用教程敬请期待其他写在后面写在前面 博主喜欢二次元&#xff0c;想着在读研期间做点对自己有意义的事&#xff0c;因此选择了动漫人物生成方向(呜呜呜&#xff0c;太感谢导师理解和支持了)…...

SpringBoot实现自己的日志服务

日志服务是作为软件开发架构的必备服务之一&#xff0c;一直都是我们所关注&#xff0c;所考虑的服务关键点&#xff0c;一个优秀的日志服务可以为项目的维护提供有力的支持&#xff0c;提高了系统的可靠性。 前言 如何设计一个优秀而又可靠的日志服务&#xff0c;是一直以来都…...

基于ssm流浪动物救助及领养管理系统(文档)024

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…...

maven安装及配置(IDEA版)简洁

1.下载Maven&#xff1a;您可以从Maven官方网站&#xff08;https://maven.apache.org/download.cgi&#xff09;下载适合您操作系统的Maven版本&#xff0c;并解压缩到您想要安装的位置。 2.配置环境变量&#xff1a;将Maven的bin目录添加到PATH环境变量中&#xff0c;这样…...

最全Linux应用开发解析(持续更新)

一、文件IO 1.1 文件描述符 在 Linux 操作系统中的一切都被抽象成了文件&#xff0c;那么一个打开的文件是如何与应用程序进行对应呢&#xff1f; 解决方案是使用文件描述符&#xff08;file descriptor&#xff0c;简称fd&#xff09;&#xff0c;当在进程中打开一个现有文…...

SpringBoot学习笔记下

文章目录1 接口架构风格 —RESTful1.1 REST1.2 在页面中或者ajax中&#xff0c;支持put&#xff0c;delete请求2 Spring Boot 集成 Redis2.1 redis起步依赖2.2 对比 StringRedisTemplate 和 RedisTemplate3 SpringBoot集成Dubbo3.1 看 SpringBoot继承Dubbo的文档3.2 公共项目7.…...

小米12/12S/13Pro手机MIUI14系统小黄鸟(HttpCanary)CA证书无法注入问题

很多用户获取ROOT是为了抓包&#xff0c;这里一般常常依赖一款名叫HttpCanary的软件&#xff0c;因软件 图标是一只小鸟&#xff0c;我们经常叫他小黄鸟。从日常使用上来看&#xff0c;黄鸟确实有抓包获取数据等 功能&#xff0c;也在多个手机上实践成功&#xff0c;网上相关教…...

SpringCloud学习笔记(四)Docker

一、Docker如何解决依赖的兼容问题 将应用的libs&#xff08;函数库&#xff09;、Deps&#xff08;依赖&#xff09;、配置与应用一起打包&#xff0c;形成可移植镜像Docker应用运行在容器中&#xff0c;使用沙箱机制&#xff0c;相互隔离 二、Dokcer如何解决开发、测试、生…...

SAP 批量修改 工艺路线 和 BOM

1、在运维的过程中经常会遇到用户需要批量更改组件&#xff0c;或者是批量更改数量&#xff0c;还是组件里面的一些标识&#xff0c;当处理这些批量数据处理的业务时&#xff0c;BOM的批量更改一个想到的就是CS20&#xff0c;但是CS20当BOM需要替换的时候就不是很适用。新增的组…...

基于OpenTelemetry实现可观测性-Part 4 Collector

译注&#xff1a;这是一个系列&#xff0c;共分成6部分&#xff0c;这是第4部分。翻译自&#xff1a;https://trstringer.com/otel-part4-collector/在上一篇博文中&#xff0c;我们讨论了如何使用 SDK 和追踪器提供者从进程获取遥测数据。存在很多不同类型的导出器&#xff0c…...

STM32学习(十二)

软件定时原理 使用纯软件&#xff08;CPU死等&#xff09;的方式实现定时&#xff08;延时&#xff09;功能。 不精准&#xff1a;函数调用压栈进栈需要耗费额外的时间&#xff1b;流水线使得程序执行时间不确定。CPU死等。 定时器定时原理 使用精准的时基&#xff0c;通过…...

Python毕业设计推荐

今天给大家推荐4个基于python的毕业设计/课程设计 1 网上商城系统 这是一个基于pythonvue开发的商城网站&#xff0c;平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能…...

组装式交付-云巧 知多少

组装式交付-云巧 知多少组装式交付背景云巧什么是云巧呢&#xff1f;云巧的优势丰富的组件&#xff0c;提升代码复用全面的集成方式&#xff0c;支持模块化组装云原生标准&#xff0c;预集成阿里云产品云巧的构成云巧组件云巧资产市场云巧生态云巧工坊总结组装式交付背景 一直…...

「解析」牛客网-华为机考企业真题 41-60

又是一年春招时&#xff0c;有幸收到华为自动驾驶算法岗&#xff0c;之前刷题不多&#xff0c;在此汇总下牛客网的真题&#xff0c;主要采用Python编写&#xff0c;个人觉得语言只是实现工具而已&#xff0c;并不是很关键&#xff0c;Python简洁易懂&#xff0c;更加适合算法工…...

RPA机器人在信息化管理、报告生成实现自动化成为生态环境局新宠

随着人们对环境和自然资源的保护意识逐渐增强&#xff0c;我国在环保领域的投入力度也越来越大。然而&#xff0c;环境保护任务的繁重与复杂&#xff0c;也意味着环保执法机关需要更加高效、精准的手段来完成任务。这时&#xff0c;“机器人流程自动化”&#xff08;简称RPA&am…...

关于线程池你了解些什么?

前言学习线程池的思维导图线程池是什么?它有什么用?虽然线程比进程更轻量级,但是每个进程所占的资源空间是有限,如果我们频繁创建和销毁线程也会消耗很多CPU资源,那么我们该如何解决这个问题呢?官方解释:线程池是一种多线程处理形式,其处理过程可以将多个任务添加到阻塞队列…...

基于MATLAB编程的萤火虫改进帝国竞争算法求解多目标优化,FA-ICA目标寻优

目录 背影 帝国竞争 基本定义 优点 萤火虫原理 改进思路 基于萤火虫改进帝国竞争多目标求解 代码 结果分析 展望 背影 多目标多参数优化是常遇到的优化问题,有很多传统算法可以求解,比如fiminmax,fmincon等,但是都容易陷入局部最优,本文用帝国竞争优化萤火虫算法进行多目…...

低代码开发:助力企业高效实现数字转型的一大利器

随着互联网、移动互联网、物联网等技术的迅速普及和应用&#xff0c;数字经济时代的到来&#xff0c;人们的生产、消费和生活方式都发生了巨大的变化&#xff0c;而传统企业也面临着巨大的挑战和机遇。 在数字经济时代&#xff0c;数据成为一种重要的生产要素。数据成为一种重要…...

centos7安装mysql并添加密码

网上找的教程有的是不能用&#xff0c;有的是改密码有问题&#xff0c;下面这个教程亲测可用 #安装wget,wget是Linux中的一个下载文件的工具 yum -y install wget #使用wget下载文件 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-com…...

大数据未来发展怎么样?

就目前情况来看&#xff0c;大数据行业前景不错薪资待遇好&#xff0c;也有越来越多的人选择大数据行业&#xff0c;各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广&#xff0c;不管是科技领域还是食品产业&#xff0c;零售业等都是需要大数据人才进行大数据的处…...

图书管理系统(考试样品)

一、执行下面的sql CREATE DATABASE bms CHARACTER SET utf8mb4;USE bms;DROP TABLE IF EXISTS tb_book;CREATE TABLE tb_book (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,desc TEXT ,type_id INT DEFAULT NULL,PRIMARY KEY (id) ) ; INSERT INTO tb_book VA…...

树与二叉树(图示超详解哦)

这里写目录标题引言树与二叉树树的概念及结构树的表示二叉树特殊的二叉树二叉树的性质二叉树的表示顺序结构链式结构总结引言 在前面的一段时间里&#xff0c;我们学习了顺序表、链表、栈、队列的知识。其实这些顺序结构都是线性的&#xff0c;它们的逻辑结构都是一条线穿起来…...

【vue3】数据绑定,动态渲染class与style

数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式&#xff08;style&#xff09;。因为 class 和 style 都是 attribute&#xff0c;我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是&#xff0c;在处理比较复杂的绑定时&#xff0c…...

axios使用

参考地址&#xff1a;https://github.com/axios/axios html CDN <script src"https://cdn.jsdelivr.net/npm/axios1.1.2/dist/axios.min.js"></script>或者 <script src"https://unpkg.com/axios1.1.2/dist/axios.min.js"></scrip…...

countup.js 数字动画

countup.js 数字动画1. 安装2. 参数3. Vue组件封装3.1 组件代码3.2 调用方式1. 安装 npm i countup.js2. 参数 项目Valuetargetstring, HTMLElement ,HTMLInputElement - id of html element, input, svg text element, or DOM element reference where counting occursendV…...

10个问题带你全面理解Linux性能优化

1. 为什么面试官喜欢考察性能优化问题&#xff1f; 面试官考察性能优化问题的目的可能并不是要你设计一个性能很高的系统&#xff0c;而是为了全方位考察一个面试者的知识背景和实践能力。 1) 性能优化涉及的知识面既需要深度&#xff0c;同时又需要一定的广度 从深度上来说…...

php使用yield处理大数据文件

1.概述 yield和return有点像&#xff0c;它是一个生成器&#xff0c;对PHP应用的性能有非常大的影响&#xff0c; 只有在调用的时候才会执行&#xff0c;并不产生多余的值&#xff0c;比如读取一个很大的文件或者计算大量的数据时&#xff0c;如果直接读取很有可能内存就爆了&a…...

数据更新 | CnOpenData法拍房数据

法拍房数据 一、数据简介 法拍房&#xff0c;即“法院拍卖房产”&#xff0c;是被法院强制执行拍卖的房屋 。当债务人&#xff08;业主&#xff09;无力履行借款合约或无法清偿债务时&#xff0c;而被债权人经司法程序向法院申请强制执行&#xff0c;将债务人名下房屋拍卖&…...

(一)kafka从入门到精通之初识kafka

一、发布订阅系统 在学习kafka之前&#xff0c;我们先来看看什么是发布订阅系统。 概念 数据的发送者不会直接把消息发送给接收者&#xff0c;这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类&#xff0c;接受者订阅它们&#xff0c;以便接受特定类型的消…...

stata17中double类型与float类型的区别(变量的存储格式和显示格式、数值运算出错、转换数值格式、字符型数据转换为数值型数据)

double类型与float类型区别 参考&#xff1a;变量的存储格式和显示格式 数值运算出错 因为营业总收入和其他业务收入都是字符型数据&#xff0c;所以使用real函数将其转换为数值型数据。 gen 主营业务收入 real(营业总收入)-real(其他业务收入)结果如下图所示&#xff1a;计…...

【JVS低代码配置平台】基于树形字典的纯配置实现左树右表

左树右表是我们在业务管理系统中常见的业务形态&#xff0c;如下图所示&#xff0c;树形结构用于多层级的数据的展示&#xff0c;列表页作为对应数据的横向行级展现。 实现树形的配置有两种模式&#xff0c;一种是根据树形字典配置&#xff08;简单导入即可&#xff09;&#x…...

Spring Boot实现Redis同数据源动态切换DB | Spring Cloud 31

一、前言 在某些业务场景下&#xff0c;需要多访问同一Redis数据源下的不同DB。 在Redis中默认提供了16个数据库&#xff08;序号0-15&#xff09;&#xff0c;默认Redis使用的是db 0。 此章节基于spring-boot-starter-data-redis模块&#xff0c;实现了Redis同数据源动态切换…...

[技术经理]02 什么是技术经理?

目录01什么是技术经理02总结01什么是技术经理 什么是技术经理&#xff1f; 我用一句话概括为&#xff1a;专业技术团队的管理者。 技术经理&#xff0c;是一种管理职位&#xff0c;通常是在软件开发、互联网等科技公司或技术团队中担任。 技术经理的职责&#xff0c;**是管理…...

油炸食品的最佳用油:米糠油

摘要&#xff1a;本文详细介绍了米糠油作为最佳油炸用油的各种特点&#xff0c;但更重要的是建议采用真空油炸方法&#xff0c;更能发挥米糠油的优势。 油炸食品是我们日常生活中常见的美味&#xff0c;人们普遍的共识是“油炸食品虽然好吃&#xff0c;但不适合多吃”&#xff…...

【C++】queue和priority_queue的成员函数和非成员函数

目录 1. queue 1.1 queue的成员函数 1.1.1 构造函数 1.1.2 判空 1.1.3 大小 1.1.4 队头 1.1.5 队尾 1.1.6 入队 1.1.7 emplace 1.1.8 出队 1.1.9 交换 1.2 queue的非成员函数 1.2.1 关系运算符重载 1.2.2 交换 2. priority_queue 2.1 priority_queue的成员函数…...

韩长赋在第七届杭州全球企业家论坛开幕式上讲话

今天我们相聚在美丽的西子湖畔&#xff0c;隆重举办“第七届杭州全球企业家论坛暨中国消费品博览会”&#xff0c;旨在凝聚发展力量&#xff0c;共创合作未来。 今年是全面贯彻落实党的二十大精神的开局之年&#xff0c;是全面建设社会主义现代化国家&#xff0c;加快建设农业强…...

webpack+nginx开启gzip压缩部署项目

首先在服务器安装nginx sudo apt update sudo apt install nginx 安装完毕后将前端项目打包 webpack.output.publicPath里配置资源基础路径 资源打包出来就是/publicPath开头 1.http://www.xxx.com/ publicPath: / 2.http://www.xxx.com/web publicPath: /web/ 尾巴多加个/…...

coco 2017数据集 类别提取并转换为yolo数据集

coco 2017数据集提取和转换本次分割的动物数据集 4G一. coco2017数据集结构标注文件解析二. 提取需要的类别重新封装成coco数据集&#xff08;这里以动物类别为例&#xff09;三. 转换为yolo 数据集本次分割的动物数据集 4G https://download.csdn.net/download/qq_26696715/8…...

jdk线程池技术

jdk线程池ThreadPoolExecutor的7个参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) {if (corePoolSize &l…...

keepalived+nginx 双机热备搭建

keepalivednginx 双机热备搭建一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux&#xff08;双机执行&#xff09;1.6 修改hosts&#xff08;双机执行&#xff09;二、安装keepalived2.1 执行一下命令安装keepa…...

【云原生】容器编排技术Docker Compose

为什么需要Docker ComposeDocker Compose介绍Docker Compose安装Docker Compose版本介绍Docker Compose基本命令介绍Docker Compose实战Docker Compose Yml文件介绍总结为什么需要Docker Compose Docker帮助我们解决服务的打包安装的问题&#xff0c;随着而来的问题就是服务过…...

windows安装 nvm,实现nodejs多版本切换

下载链接&#xff1a;https://github.com/coreybutler/nvm-windows/releases 安装node指定版本 nvm install 版本号 列出所有node版本 nvm ls 切换node版本 nvm use 版本号...

遇事不决,阿尔萨斯(Arthas)

文章目录 一、cat log.log | grep 流水号 引发的惨案二、Collections.sort排序long型强转int型引发的惨案 一、cat log.log | grep 流水号 引发的惨案 接口报错&#xff0c;查看日志是空指针&#xff0c;但是没有详细的报错信息。 以为是日志打印格式的问题&#xff0c;遂改变…...

TCP长连接短链接

1、短连接 短连接是指通讯双方有数据交互时&#xff0c;就建立一个连接&#xff0c;数据发送完成后&#xff0c;则断开此连接&#xff0c;即每次连接只完成一项业务的发送。 2、长连接 长连接是指在一个连接上可以连续发送多个数据包&#xff0c;在连接保持期间&#xff0c;…...

RK3568 学习笔记 : Linux emmc 内核启动 rootfs 根文件系统无法正常挂载问题的分析

问题描述 平台 &#xff1a; NanoPi-R5C 开发板 RK3568 平台。 手动编译的 Linux 内核&#xff0c;结果发现大概率 emmc 无法正常初始化&#xff0c;导致 rootfs 根文件系统无法正常挂载 Linux 内核版本&#xff1a; 6.1 Linux 内核代码位置&#xff1a; https://github.com…...

26 JavaScript学习:JSON和void

JSON 英文全称 JavaScript Object NotationJSON 是一种轻量级的数据交换格式。JSON是独立的语言JSON 易于理解。 JSON 实例 简单的 JSON 字符串实例: "{\"name\": \"Alice\", \"age\": 25, \"city\": \"San Francisco\&…...

C语言中的精确宽度类型

概述 在 C 语言标准库 <stdint.h> 中定义了一系列精确宽度的整数类型&#xff0c;这些类型保证了它们的位数宽度&#xff0c;从而允许编写跨平台的可移植代码。以下是一些常用的精确宽度整数类型&#xff1a; int8_t: 8位有符号整数uint8_t: 8位无符号整数int16_t: 16位…...

程序员的实用神器,16款程序员生产力工具推荐

前言 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 一、程序员开发工具 Intellij IDEA IntelliJ I…...

react、vue 把要渲染的元素挂到指定节点。

react、vue 把要渲染的元素挂到指定节点。 文章目录 vue3 的 Teleportreact 的 createPortal 在日常工作中&#xff0c;需要封装一些定制的浮动模态框&#xff0c;但是每个弹框在不同的父级元素中&#xff0c;那弹框的层级我们是没有办法控制到的&#xff0c;所有有必要把它统一…...

C++面向对象学习笔记一

本文阅读下述文章&#xff0c;顺手记录学习《C面向对象程序设计》✍千处细节、万字总结&#xff08;建议收藏&#xff09;_c面向对象程序设计千处细节-CSDN博客 目录 前言 正文 浅拷贝和深拷贝 向函数传递对象 静态数据成员和静态成员函数 友元 友元函数 1、将非成员函数声明…...

【Web漏洞指南】DOM XSS

【Web漏洞指南】DOM XSS 漏洞概述DOM XSS可以导致的漏洞开放重定向JavaScript注入文档域操纵链接操纵Ajax请求操纵客户端SQL注入本地文件路径操纵客户端JSON注入Web消息操纵DOM数据操纵拒绝服务 漏洞概述 当来自攻击者控制的源&#xff08;如location.search、document.referr…...

ic基础|时钟篇02:关于时钟分频器的二三事

大家好&#xff0c;我是数字小熊饼干&#xff0c;一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结&#xff0c;并通过汇总成文章的形式进行输出&#xff0c;相信无论你是在职的还是…...

如何更好地使用Kafka? - 故障时解决

要确保Kafka在使用过程中的稳定性&#xff0c;需要从kafka在业务中的使用周期进行依次保障。主要可以分为&#xff1a;事先预防&#xff08;通过规范的使用、开发&#xff0c;预防问题产生&#xff09;、运行时监控&#xff08;保障集群稳定&#xff0c;出问题能及时发现&#…...