Python脚本随笔-py文件间的调用

脚本运行过程中可能由某个py文件调用另一个py文件,不同于import,调用py文件相当于直接去执行另一个py文件

py文件的调用需要使用sys库和os库

  • 调用并传参数:调用py文件可以使用os.system(file)语句,file为被调用py文件的绝对路径,os.system语句规则如下:

os.system格式为os.system(command % (%s,%i ...))
command 为字符串格式的命令语句,如果需要传递参数,以%s或%i等取代
具体参数如下:
%s    字符串 (采用str()的显示)
%r    字符串 (采用repr()的显示)
%c    单个字符
%b    二进制整数
%d    十进制整数
%i    十进制整数
%o    八进制整数
%x    十六进制整数
%e    指数 (基底写为e)
%E    指数 (基底写为E)
%f    浮点数
%F    浮点数,与上相同
%g    指数(e)或浮点数 (根据显示长度)
%G    指数(E)或浮点数 (根据显示长度)
%后面的括号中依次输入对应参数内容

  • os.system举例:

    def run_parser():
        rootdir = os.path.join(os.getcwd(),"scripts/enum_parser.py")
        rootdir += " %s %s"
        os.system(rootdir %("input_table_define","output_lua_server"))
  • 被调用端读取参数:通过sys.argv[]接受参数

此处sys.argv[0]表示代码本身文件路径,不是传递的参数,参数从[1]开始

传递过程中不能传“”空字符串,空字符串不会被传递,需要传“”空字符串时应假定一个特殊字符串传递,在接收端检测到目标字符串时将变量置空

  • 被调用端读取参数举例:

    #参数初始化
    canshu1 = ""
    canshu2 = ""
    output = ""
    if(len(sys.argv) >3):
        output = sys.argv[3]
        if output == "NoVal":
            output == ""
    if(len(sys.argv) >2):
        canshu2 = sys.argv[2]
        if canshu2 == "NoVal":
            canshu2 == ""
    if(len(sys.argv) >1):
        canshu1 = sys.argv[1]
        if canshu1 == "NoVal":
            canshu1 == ""

    首先默认置空,之后判断是否传入了足够的参数防止报错,最后读取参数

  • 文件调用实用测试方法:

os.system语句的返回值可用来判断该语句是否被正确执行,在脚本间相互调用时为每个脚本写print语句很麻烦,利用返回值是否为0可判断是否正确执行

  • 测试方法举例:

    re = os.system(rootdir %(p1,p2,p3))
    if not re == 0:
        print("fail call")
        os.system("pause")

原文地址:https://www.cnblogs.com/Noble-Monster/p/11232444.html

时间: 2024-10-08 06:51:00

Python脚本随笔-py文件间的调用的相关文章

python的setup.py文件

最近工作需要,用Cython写了*.pyx扩展,并将其编译成C文件,最后转换为so扩展,供python引用 使用 distutils 编译,建立一个setup.py 的脚本 from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext setup( name = 'cython_build_test', cmdclass = {'b

用Python脚本监测.py脚本的进程状态,并实现中断重启。

用Python脚本监测.py脚本的执行状态,并实现中断重启. #!/usr/bin/python # -*- coding:utf-8 -*- import subprocess,time,sys TIME = 10                        #程序状态检测间隔(单位:分钟) CMD = "get_bjipku.py"                 #需要执行程序的绝对路径,支持jar 如:D:\\calc.exe 或者D:\\test.jar class Aut

python脚本修改hosts文件

记一次使用python脚本来修改hosts文件,由于公司服务器需要换ip地址,服务器里都是Linux系统,而hosts文件中有些解析的ip,手动一台一台的解析太麻烦,就写了这个脚本.本来以为感觉很简单,但是写的过程真不好写,也试过shell脚本,不过也不好写.然后就直接用python写,也找了一些网上的教程,不过也没有很好的解决问题.下面把脚本贴出来记录下 #!/usr/bin/python #coding:utf8 import os import sys import re hostsfil

Python中__init__.py文件作用之我见

在Python中每次创建一个package后都会自动生成一个 __init__.py'空文件;该问价的作用是:声明我们当前创建的文件夹(包)是一个**Python模块**,在Python中每一个包中必须有一个__init__ .py文件. 一般这个文件都为空,只有我们在这个包下面创建多个.py文件后,当我们想使用该包下的某一模块,我们则需要在__init__.py文件中通过 __ all__ = [ '模块名'] 指定我们需要导入的模块, Python中导包其实就是导入指定包文件中的__init

Python如何将py文件打包成exe

安装pyinstaller 打开cmd窗口,输入pip install pyinstaller,命令行输出successfully表示成功. 生成exe文件 一.单个py文件 在py文件目录下,打开cmd窗口,输入pyinstall -F XXX.py,执行成功的话,会在当前目录生成一个dist文件夹,XXX.exe文件在此文件夹下. 添加版本信息: 安装好pyinstaller后,我们会得到两个辅助工具,pyi-grab_version和pyi-set_version. 1. 使用pyi-gr

如何将jupyter中的.ipynb文件转换成python中的.py文件

引自:https://blog.csdn.net/weixin_43453851/article/details/89192635 1,在当前文件夹的目录中输入cmd并回车(打开的cmd中会显示出你当前的目录)2,输入命令: jupyter nbconvert --to script *.ipynb3,运行完后,当前文件夹目录中的所有.ipynb文件都会转成.py文件. 原文地址:https://www.cnblogs.com/lyp1010/p/12240119.html

Python脚本的实现文件重命名

第一次尝试用python写一个完整有用的程序,这个脚本实现了能把当前文件的指定文件按一定顺序进行重新命名,还是有一定的适用价值 下面贴代码 #coding:utf-8import osperfix='test' #perfix为重命名后的文件起始字符length=2 #length为除去perfix后,文件名要达到的长度base=1 #文件名的起始数format='txt' #文件的后缀#函数PadLeft将文件名补全到指定长度#str为将要补全的字符#num为要达到的长度#padstr 为达到

python 脚本实现查看文件内容

''' 功能:查看文件 版本:1.0 作者:白 ''' import sys,os try:     filename=sys.argv[1]     try:         f=open(filename)     except IOError:         print("\033[33mThis is Files is not exist\033[0m")         sys.exit()     while True:         line = f.readline

python脚本---清理过期文件

#!/usr/bin/python import os,time del_file = [] #定义一个空列表,将存放过期文件 class clean: def __init__(self,file_path): self.file_path = file_path def del_file(self): lf = list(os.listdir(self.file_path)) #将目标目录下的所有文件存在列表lf中 for i in range(len(lf)): file_date = o