首页 > 编程语言 >python学习笔记35-脚本有多个文件时如何指定import_path

python学习笔记35-脚本有多个文件时如何指定import_path

时间:2023-06-12 10:47:08浏览次数:31  
标签:scan python os py 35 import path atpg

如果脚本涉及多个文件, 且分布在多个目录中, 则会涉及到import其它目录的文件.
如果脚本不在脚本所在的目录run, 则会涉及到run目录与脚本目录不相关.

如何解决这个问题呢?

假设目录结构如下:

/a/b/c/bin/dfx.py

/a/b/c/atpg/atpg.py
/a/b/c/atpg/atpg_sim.py

/a/b/c/common/my_log.py
/a/b/c/common/my_method.py

/a/b/c/scan/scan.py
/a/b/c/scan/scan_drc.py

其中 bin/dftx.py是脚本入口, 可以在这个文件中修改sys.path, 然后就可以import其它文件了.

import sys
import os
import logging


# 获取路径/a/b/c, 并添加到sys.path中, 这样import时就会在这个路径下找
#    sys.argv[0]: 调用脚本时的脚本名, 可以是link的.
#    os.path.realpath(): 获取脚本的所在的真实路径(可处理link的情况), /a/b/c/bin/dfx.py
#    os.path.dirname(/a/b/c/bin/dfx.py): 获取dfx.py所在的路径: /a/b/c/bin
#    os.path.dirname(/a/b/c/bin       ): 获取dfx.py所在的路径的上一级路径: /a/b/c
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(sys.argv[0))))

# 然后就可以import路径/a/b/c下的内容了:
from atpg.atpg     import CAtpg
from atpg.atpg_sim import CAtpgSim

from common.my_log    import CMyLog
from common.my_method import CMyMethod

from scan.scan     import CScan
from scan.scan_sim import CScanSim

标签:scan,python,os,py,35,import,path,atpg
From: https://www.cnblogs.com/gaiqingfeng/p/17474285.html

相关文章

  • Python工具箱系列(三十五)
    前文使用了SQLAlchemy的Core层来实现数据库、表与数据的CRUD。初步体现出了SQLAlchemy的优势。但ORM的特点没有充分地表现出来。下面的代码则从Python的类出现,生成表结构,并且进行数据的CRUD操作。fromsqlalchemyimport(Column,DateTime,Float,ForeignKey,Integer,MetaDa......
  • 实验6 turtle绘图与python库应用编程体验
    实验任务1task1-11fromturtleimport*2defmove(x,y):3penup()4goto(x,y)5pendown()6defdraw(n,size=100):7foriinrange(n):8fd(size)9left(360/n)10defmain():11pensize(2)12pencolor(......
  • python学习笔记33-将标准输出打印到文件中
    importsys#保存原始的stdout,方便后续恢复out_tmp=sys.stdout#将stdout重新定向到文件,这样输出的标准输出的内容就会输出到文件中sys.stdout=open('help.QWidget.rpt','w')#执行help命令,标准输出打印内容,此时会打印到文件中fromPyQt5.QtWidgetsimport......
  • python学习笔记34-获取函数的help信息
    list_for_help=list()list_for_help.append("PyQt5.QtCore")list_for_help.append("PyQt5.QtCore.QTime")list_for_help.append("PyQt5.QtGui")list_for_help.append("PyQt5.QtGui.QColor")list_for_help.append("PyQt5......
  • RC4加密算法及Python实现
    一、RC4加密算法原理RC4算法是一种流加密算法,由RonRivest在1987年设计。它的主要特点是简单快速,而且在加密解密过程中使用的密钥长度可变。因此,RC4算法被广泛应用于网络安全领域,如SSL、TLS、WEP、WPA等协议中。RC4算法的加密过程如下:初始化S盒和T数组。S盒是一个256字节的数组,用于......
  • Python工具箱系列(三十五)
    前文使用了SQLAlchemy的Core层来实现数据库、表与数据的CRUD。初步体现出了SQLAlchemy的优势。但ORM的特点没有充分地表现出来。下面的代码则从Python的类出现,生成表结构,并且进行数据的CRUD操作。fromsqlalchemyimport(Column,DateTime,Float,ForeignKey,Integer,MetaData,......
  • RK3568开发板Buildroot 系统设置显示颜色格式
    BuildrootSDK内Weston目前默认显示格式为ARGB8888,对于某些低性能平台,可以在weston.ini的core段配置为RGB565。修改文件系统中/etc/xdg/weston/weston.ini文件,修改如下所示:[core]#xrgb8888|rgb565|xrgb2101010gbm-format=rgb565也可以在weston.ini的output段单独配......
  • 掌握Python文件操作:从基础到高阶的全方位探索
    在本篇博客中,我们将全面、深入地探讨Python中的文件操作。文件操作在Python编程中是不可或缺的一部分,它包含了打开、读取、写入和关闭文件等各种操作。我们将从基础的文件操作讲解到高级的文件处理技巧,以及如何优雅地使用Python进行文件操作。每一部分我们都会分享一些独特的用法,并......
  • 使用Xpath编写爬虫代码
    Xpath选择器爬取房源信息实例获取网页html,未处理子网页信息。python3.6foriinrange(1,101):print('正在爬取第'+str(i)+'页')#爬取北京上海广州深圳的二手房信息city=['bj','sh','gz','sz']forcincity:......
  • Luogu P3435 [POI2006] OKR-Periods of Words
    [POI2006]OKR-PeriodsofWords题面翻译对于一个仅含小写字母的字符串\(a\),\(p\)为\(a\)的前缀且\(p\nea\),那么我们称\(p\)为\(a\)的proper前缀。规定字符串\(Q\)(可以是空串)表示\(a\)的周期,当且仅当\(Q\)是\(a\)的proper前缀且\(a\)是\(Q+Q\)的前缀......