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('字符串') 效果一样
将这两个结合,就可以在一个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