首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取当前正在执行脚本的绝对路径

如图所示,dirname $0是不能在命令行下单独执行的。 举个例子,我用mkdir -p创建一系列文件夹 mkdir -p 1/2/3/4/5/6 然后写一个小脚本 test.sh #!...现在我们回头来把这个脚本拆开来理解一下 `` 表示执行引号内的命令 $0 表示当前执行脚本的文件名 dirname $0 表示获取当前执行脚本的路径 这样一来就能明白dirname $0是如何获取当前执行脚本的路径了吧...$( ) 和 `` 在这里需要补充$( ) 和 ``的不同。 二者都是返回括号中命令的结果,是用来作命令替换的,即先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。...但需要注意两点: 在多层次的复合替换中,``必须要额外的跳脱处理(反斜线) 不是所有的类unix系统都支持$( ),但反引号是肯定支持的 举个栗子~ #!.../bin/bash basepath=`cd `dirname $0`; pwd` echo $basepath 出现了报错,这就需要按我上面提到的在多层次的复合替换中,``必须要额外的跳脱处理(反斜线

1.8K20

模块导入及使用,关键字,模块搜索路径,python文件的两种用途

3件事: 打开模块文件 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间 在程序中会有一个模块名称指向模块名称空间(如果他是import time as f)则是f指向模块空间 在当前执行文件中拿到一个模块名...在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用 优点:不用加前缀,代码更加精简 缺点:容易与当前执行文件中名称空间中的名字冲突 c)相同点和不同点...2.关键字 _all_ 如果一个模块的文件内写有_all_ import 模块名字,默认导入所有模块 而当模块中出现_all_时候,他只会导入_all_后面列表内的名称 二.模块循环导入 1.情况 创建两个模块...f1(): from m2 import x y = 'm1' f() 三.模块搜索路径 去内存中找去→内置模块中找→去环境变量中找 打印环境变量 import sys print(sys.path...) 四.python文件的两种用途 1.模块文件 2.运行文件 搜索路径以运行文件为基准 五.关键字_name_ 在执行文件中_name_会被读取成'__main__' 在导入模块的时候__name__

93920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 导入模块中的类

    参考链接: 用Python导入模块 介绍  在看代码时发现Python的导入类也可以用“.”的方式,很是惊奇,记录下来: 如以下代码:其所在文件(模块)为test.py  class Dog():    ...def __init__(self,name1):   #这里想说一点,Python class中的__init__就相当于Java中的构造函数一样,形参在这定义。        ...if __name__ == '__main__':     dog1 = Dog("ha").bark() 单独运行时结果如下:  在新的.py文件里想要导入这个模块中的Dog类,有两种方式: 第一种为...:  from test import Dog   #使用from  “模块名”import  “类名”的方式 dog2 = Dog("jinmao") dog2.bark() 结果为:   第二种为:...  import test  #import  "模块名" dog2 = test.Dog("jinmao")  #使用   模块名.类名   的方式使用此类 dog2.bark() 结果和第一种一样。

    2.3K20

    一日一技:导入父文件夹中的模块并读取当前文件夹内的资源

    它的文件结构与每个文件中的内容如下: ? 现在,我直接在 scripts 文件夹里面运行run.py会报错,提示从包的最顶层之外相对导入。...于是尝试获取当前正在运行的这个文件的绝对路径: import sys from pathlib import Path current_folder = Path(__file__).absolute(...导入模块已经正常了,但是读取资源文件又异常了。 这是因为,import导入模块时,是根据sys.path中的路径来寻找的。但是读取资源文件的时候,相对文件路径是相对于工作区来寻找的。...现在无论是读取资源文件还是导入模块,都已经正常了。 我们再回到 scripts 文件夹中执行看看: ? 发现也能正常执行。...总结 涉及到模块导入相关的环境,可以通过在sys.path添加绝对路径来解决。涉及到读取资源文件的相关环境,可以通过使用os.chdir修改工作区为另一个绝对路径来解决。

    2K30

    python中关于模块导入的模式

    模块导入1.1 import导入模块所谓的模块其实就是一个外部的工具包,其中存在的其实就是Python文件,这些文件都实现了某种特定的功能,我们导入包之后直接使用即可,非常的方便。...在开发中使用最多的就是使用: import 方式进行导入。导入的包一般放在文件的最前面。...但是一定要注意这种形式可能会产生覆盖的情况,当导入了两个不同包中的同名的函数的时候,第二个函数会覆盖第一个函数举例:只想导入time模块中的ctime、time两个方法,可以按照以下的格式导入:# 导入模块中指定的方法...os模块提供了一些系统级别的操作命令模块的制作、发布、安装3.1 模块制作Python文件都可以作为一个模块,模块的名字就是文件的名字。比如创建一个test.py文件,文件中创建一个add()函数。...此时test.py文件就是一个模块,可以在其他的python文件中直接引入使用。一个模块中可以包含函数、类、变量,也能包含可执行的代码。

    1.6K30

    pathlib模块:优雅处理文件路径的利器

    今天介绍Python中一个非常实用的模块——Pathlib。相比于使用传统的字符串操作,Pathlib可以让我们以更直观和优雅的方式处理文件路径。...path.resolve() path.absolute() python pathlib 中的resolve 和 absolute区别: Path.resolve()会将路径规范化并解析到绝对路径...等相对路径标记,从而得到规范的绝对路径。 Path.absolute()仅仅返回绝对路径,不会展开符号链接和解析相对路径标记,只是简单的通过追加当前工作目录来转换为绝对路径。...虽然后面那种方式获取到的绝对路径里面包含了../这种类似的符号,但是路径一样是可以访问的哈,在window的文件管理里面复制完整的路径一样可以打开这个文件。...模块,至于它是否还有一些其他的用法,可以自己去查官网资料进行学习。

    44240

    模块的四种形式、 import和from...import、 循环导入问题、模块的搜索路径、 python文件的两种用途

    方法名的优缺点 自定制模块 循环导入问题 模拟问题的发生: 解决方案 方案一 方案二 模块的搜索路径 Python文件的两种用途 if _name_ == '__main__':的使用 模块的四种形式...py代码读入内存名称空间然后运行 把sleep()读入当前文件名.py文件中(就是当前文件),因此可以直接使用方法名 如果想使用多个方法: from 模块 import 方法1,方法2 from 模块...m1文件就会报错‘cannot import name 'x'’ 解决方案 方案一 将对自定义的模块调用都放入函数中,这样就只有使用模块时才会调用模块,从而避免两个程序以相互调用的逻辑出现。...模块的搜索顺序可以通过在主程序内读入一个模块,让主程序调用模块运行一段时间,在这段时间内将此模块删除来判断程序对模块路径的搜索顺序。...,不想让模块中的某个函数或者代码执行,也可以用于只让某个函数或者代码块执行。

    65020

    【实测】python & pycharm & 终端 导入上级模块文件的问题

    首先看简单的例子: 这个简单的demo中,t1模块下有 t2模块和p1.py文件,t2模块内有p2.py文件。...p1.py的内容是输出一句话: p2.py 的内容则是直接导入p1 : 注意,p1 其实 是位于 p2的上级模块 下的,正常来说,在pycharm中这么从上级导入并不是很被推荐。...在pycharm的项目TTT中,我们执行p2.py的时候,其实Pycharm是可以搜寻到TTT下的模块的,也就是 t1 模块。所以能正常执行。...如果导入的并不是上级模块的文件,而是同级/下级的文件,那么就可以找到了。这也是为什么不推荐从上级文件夹/模块导入文件的原因之一。...因为在我的培训中,有测试平台关联游离脚本的设计,此时用的shell命令去调用可插拔的脚本,结果在终端执行的时候,有的小伙伴路径写错就会提示找不到脚本的父级模块等问题。

    1.4K20

    Python新手:在Jupyter下如何确认当前文件的路径?

    一、前言 前几天在Python最强王者交流群【Vivi 許】问了一个Python基础的问题,提问截图如下: 二、实现过程 其实后来了解到,她就是想要Jupyter当前运行文件的路径,方便确认自己当前的目录在哪儿...平时我们使用vscode和Pycharm的话,路径直接显示在编辑器上方了,但是在Jupyter的话,就没那么明显了。...这里【甯同学】提出,可以打开文件所在的位置,然后在电脑中搜一下文件名即可,这里也可以借助everything软件进行搜索。 后来【隔壁山楂】提供了一个代码,真的太强了!...这篇文章主要盘点了一个Pandas处理的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【Vivi 許】提问,感谢【甯同学】、【黑科技·鼓包】、【隔壁山楂】、【群除我佬】给出的思路和代码解析,感谢【Python进阶者】等人参与学习交流。

    1.8K20

    python中动态导入文件的方法

    1.简介在实际项目中,我们可能需要在执行代码的过程中动态导入包并执行包中的相应内容,通常情况下,我们可能会将所需导入的包及对象以字符串的形式传入,例如test.test.run,下面将介绍如何动态导入。...因为此函数是供Python解释器使用的,而不是一般用途,所以最好使用importlib.import_module()以编程方式导入模块。name:需要导入的模块的名称,包含全路径。...globals: 当前范围的全局变量,正常设置为globals()。locals:当前范围的局部变量,正常不需要使用,设置为locals()。...level:判断路径是绝对的还是相对的,0是绝对的,正数是相当于当前模块要搜索的父目录的数量。...补充关于importlib模块,还有一个方法我们需要去注意一下,就是reload方法,但我们在代码执行过程中动态的修改了某个包的内容时,想要立即生效,可以使用reload方法去重载对应的包即可。

    1.9K20

    若想在当前路径下去运行非当前路径下的.class文件(即java可执行文件),该如何操作?

    想在当前路径下去运行非当前路径下的.class文件(即java可执行文件),亦即可在任意目录下都可以执行java程序。...比如:   若 D:\Java\day01\set classpath=C:\mycode 后面没有分号,     该命令的意思是将java的运行文件所在路径告诉系统,则虚拟机在运行该类时就会到指定的目录中查找....class文件,若没找着,会报错;     若没有配置classpath路径时,虚拟机就会在当前路径下查找类文件,若没找着,会报错。   ...若 D:\Java\day01\set classpath=C:\mycode; 后面加了个分号的话,     则表示虚拟机在运行该类时就会到指定的目录中查找.class文件,若没找着,虚拟机就继续会在当前路径下查找...若在当前目录下找不着类文件原因有下: 1、类名写错.    2、设置系统变量classpath了(一劳永逸型),虚拟机根本就没找当前目录,而找的是指定的路径。 如何解决呢?

    2K10

    Python __file__属性:查看模块的源文件路径

    在这种情况下,我们可以通过 __file__ 属性查找该模块(或包)文件所在的具体存储位置,直接查看其源代码。...仍以前面章节创建的 my_package 包为例,下面代码尝试使用 __file__ 属性获取该包的存储路径: import my_package print(my_package....__.py 文件,因此这里查看 my_package 包的存储路径,输出的 __init__.py 文件的存储路径。...__file__) 程序输出结果为: D:\python3.6\lib\string.py 由此,通过调用 __file__ 属性输出的绝对路径,我们可以很轻易地找到该模块(或包)的源文件。...注意,并不是所有模块都提供 __file__ 属性,因为并不是所有模块的实现都采用 Python 语言,有些模块采用的是其它编程语言(如 C 语言)。

    1.6K00

    php dirname(__FILE__) 获取当前文件的绝对路径

    比如当前文件是放在(d:\www\)下,文件名是test.php <?...php echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D...> 使用方法提示,  dirname(__FILE__) 取到的是当前文件的绝对路径,也就是说,比起相对路径,查找速度是最快的。 ...\\或者是/  所以重复使用的时候可以认为 dirname() 把最下层的目录当成文件名来处理了.照常返回  当前目录的上级目录.这样重复就得到了它的上一级的目录. .../filename.php');  __FILE__的路径是当前代码所在文件  dirname(dirname(__FILE__));得到的是文件上一层目录名  dirname(__FILE__)

    3K50
    领券