python[sys模块使用]:配置subprocessing实现后台调用python函数,并传递次数

一、sys模块的基本使用

1、获取脚本执行时传递的所有参数:

sys.argv[0]  #表示程序自身

sys.argv[1:] #表示的是在脚本运行py文件时,传递进来的所有参数

2、sys.exit(n) 退出程序,exit(0) 是正常退出

3、sys.version:获取python解释程序版本

4、sys.platform :返回操作系统平台名称

5、sys.stdin.readline(): 相当于input函数,区别在于input不会读入\n,

import sys
# sys.stdin.readline() 
name1 = sys.stdin.readline()		
name2 = input('请输入:')
 
print(len(name1))		
print(len(name2))
 
#结果
1、输入:lgw
2、输入: lgw

打印的结果:
4
3

#结论
1、input在输入数据时,不会将最后的回车(\n) 算入到键入的数据中
2、sys.stdin.readline()	输入数据时,会将最后的回车(\n)算入到键入的数据中

所以,即使输入相同的数据时,input的数据长度永远比sys.stdin.readline小1

6、sys.stdout.write('字符串'+'\n')  跟 print('字符串') 效果一样

二、subprocessing+sys

将这两个结合,就可以在一个py文件中,调用另一个py文件的主函数,并且可以传递参数给被调用的py文件,且被调用的py文件是后台运行。

例子:

test

        |--- write_file.py

        |--- start.py

1、write_file.py是专门用来写文件模块

2、start.py 是主要运行的模块

start.py:

# main.py

import subprocess

def main():
    # 要传递的参数列表
    args = ['数据1','数据2']

    # 启动后台进程并传递参数
    p = subprocess.Popen(['python', r'C:\data\project\test\write_file.py'] + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    # 获取后台进程的输出
    stdout, stderr = p.communicate()

    # 输出结果
    if stdout.decode():
        print('执行成功')
    if stderr.decode():
        print(f'执行失败:{stderr.decode()}')

if __name__ == '__main__':
    main()

write_file.py:

import sys

def main(name,age):
    with open('1.txt','w+') as fp:
        fp.write(f'{name}-{age}')

if __name__ == '__main__':
    my_self = sys.argv[0] #表示程序自身,就当前模块了
    args = sys.argv[1:] #表示在运行该py文件时,传递进来的参数
    main(args[0],args[1])

运行效果:

1、成功:后台输出
执行成功

2、失败:后台输出

执行失败:python: can't open file 'C:\data\project\python_tool\后台运行\others.py': [Errno 2] No such file or directory

你可能感兴趣的:(python,python,开发语言)