GVKun编程网logo

如何在Python中获取当前执行文件的路径?(如何在python中获取当前执行文件的路径信息)

13

本文的目的是介绍如何在Python中获取当前执行文件的路径?的详细情况,特别关注如何在python中获取当前执行文件的路径信息的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全

本文的目的是介绍如何在Python中获取当前执行文件的路径?的详细情况,特别关注如何在python中获取当前执行文件的路径信息的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解如何在Python中获取当前执行文件的路径?的机会,同时也不会遗漏关于C++ 获取当前执行文件目录路径以及遍历当前目录所有文件、Linux_联合仿真(获取当前执行文件父路径)、perl获取当前执行文件的路径、Python 使用 os 模块遍历目录 / 获取当前文件的路径的知识。

本文目录一览:

如何在Python中获取当前执行文件的路径?(如何在python中获取当前执行文件的路径信息)

如何在Python中获取当前执行文件的路径?(如何在python中获取当前执行文件的路径信息)

如何解决如何在Python中获取当前执行文件的路径??

你无法直接确定正在执行的主脚本的位置。毕竟,有时脚本根本不是来自文件。例如,它可能来自交互式解释器或仅存储在内存中的动态生成的代码。

但是,由于总是从文件加载模块,因此你可以可靠地确定模块的位置。如果使用以下代码创建模块并将其与主脚本放置在同一目录中,则主脚本可以导入模块并使用该模块定位自身。

some_path / module_locator.py:

def we_are_frozen():
    # All of the modules are built-in to the interpreter, e.g., by py2exe
    return hasattr(sys, "frozen")

def module_path():
    encoding = sys.getfilesystemencoding()
    if we_are_frozen():
        return os.path.dirname(unicode(sys.executable, encoding))
    return os.path.dirname(unicode(__file__, encoding))

some_path / main.py:

import module_locator
my_path = module_locator.module_path()

如果你在不同目录中有多个主脚本,则可能需要一个以上的module_locator副本。

当然,如果你的主脚本是由其他一些工具加载的,而这些工具却不允许你导入与脚本位于同一位置的模块,那么你很不走运。在这种情况下,你所需要的信息根本就不在程序中任何地方。最好的选择是向工具作者提交错误。

首先,你需要从inspect和导入os

from inspect import getsourcefile
from os.path import abspath

接下来,无论你要在哪里使用它来查找源文件

abspath(getsourcefile(lambda:0))

解决方法

似乎是一个新手问题,但事实并非如此。一些通用方法并非在所有情况下都有效:

sys.argv [0]

这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但是如果你是从另一个目录中的另一个Python脚本运行的,则此方法不起作用,并且这可能在现实生活中发生。

文件

这意味着使用path = os.path.abspath(os.path.dirname(__file__)),但是我发现这不起作用:

  • py2exe没有__file__属性,但是有一种解决方法
  • 当你从IDLE运行时,execute()没有__file__属性
  • 我得到的OS X 10.6 NameError: global name ''__file__'' is not defined
  • 答案不完整的相关问题:

  • Python-查找正在运行的文件的路径

  • 当前文件的路径取决于我如何执行程序
  • 如何知道Python中正在运行的脚本的路径?
  • 将目录更改为Python脚本的目录

我正在寻找一种通用解决方案,该解决方案可以在所有上述用例中使用。

更新资料

这是一个测试用例的结果:

python a.py的输出(在Windows上)
a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz

b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz

py

#! /usr/bin/env python
import os,sys

print "a.py: sys.argv[0]=",sys.argv[0]
print "a.py: __file__=",__file__
print "a.py: os.getcwd()=",os.getcwd()
print

execfile("subdir/b.py")

subdir / b.py

#! /usr/bin/env python
import os,sys

print "b.py: sys.argv[0]=",sys.argv[0]
print "b.py: __file__=",__file__
print "b.py: os.getcwd()=",os.getcwd()

print

C:.
|   a.py
\---subdir
        b.py

C++ 获取当前执行文件目录路径以及遍历当前目录所有文件

C++ 获取当前执行文件目录路径以及遍历当前目录所有文件

C++ 获取当前执行文件目录路径以及遍历当前目录所有文件

为了方便程序员访问操作文件,C++17 引入了文件系统库

文件系统库提供在文件系统与其组件,例如路径、常规文件与目录上进行操作的设施。 文件系统库原作为 boost.filesystem 开发,出版为技术规范 ISO/IEC TS 18822:2015 ,并最终从 C++17 开始并入 ISO C++ 。现在 boost 实现可用的编译器和平台于多于 C++17 库。

文件系统库定义于头文件 <filesystem> 定义于命名空间 filesystem

在文件头加入以下代码即可使用文件系统库:

#import<filesystem>
// 推荐使用import宏,import宏可以避免重复导入
// #include<filesystem>
namespace fs = std::filesystem;

获取当前文件目录

cout << "current path:" << fs::current_path() << endl;

遍历当前目录所有文件

文件系统库提供了 directory_iterator 作为文件目录遍历器:

fs::directory_iterator di(fs::current_path());
    for (auto &item : di) {
        cout << di->path().filename()<< endl;
    }

官网中文文档

https://zh.cppreference.com/w/cpp/filesystem

官网文档非常好用。

Linux_联合仿真(获取当前执行文件父路径)

Linux_联合仿真(获取当前执行文件父路径)

#!/bin/sh
basepath=$(cd `dirname $0`; pwd)       #获取当前文件所在路径
echo $basepath     #打印当前文件所在路径
cd $basepath            #切换到该路径
export LD_LIBRARY_PATH=./   #添加库路径

./Middleware     #执行程序

 

#mac地址设置
ifconfig eth0 down
ifconfig eth0 hw ether f0:de:f1:05:d8:38
ifconfig eth0 up

 1.切换用户

#!/bin/sh
sudo -i
expect "password:"  
send "123"  
interact 

2.修改mac地址和时间

#!/bin/sh

ifconfig eth0 down
ifconfig eth0 hw ether f0:de:f1:05:d8:38
ifconfig eth0 up

date -s 2018-07-07

3.执行脚本

#!/bin/sh

ifconfig eth0 down
ifconfig eth0 hw ether f0:de:f1:05:d8:38
ifconfig eth0 up

cd /home/ubuntu/Desktop/qualnet20190903
basepath=`pwd`               #$(cd `dirname $0`; pwd) #获取当前文件所在路径
echo $basepath     #打印当前start.sh文件所在路径 
cd $basepath/Turing           #切换到该路径

export QUALNET_HOME=`pwd`
echo $QUALNET_HOME
export PATH=$PATH:$QUALNET_HOME/bin:$basepath/Turing/bin:$PATH

export LD_LIBRARY_PATH=$QUALNET_HOME/gui/lib/linux64:$basepath/Lib/bin:$basepath/ExtraLib:/home/ubuntu/Program/Qt5.9.5/5.9.5/gcc_64/lib:$LD_LIBRARY_PATH   

cd scenarios/IEEE39-28
qualnet IEEE39-28.config

4.执行带参数脚本

#!/bin/sh

ifconfig eth0 down
ifconfig eth0 hw ether f0:de:f1:05:d8:38
ifconfig eth0 up

cd /home/ubuntu/Desktop/qualnet20190903
basepath=`pwd`               #$(cd `dirname $0`; pwd) #获取当前文件所在路径
echo $basepath     #打印当前start.sh文件所在路径 
cd $basepath/Turing           #切换到该路径

export QUALNET_HOME=`pwd`
echo $QUALNET_HOME
export PATH=$PATH:$QUALNET_HOME/bin:$basepath/Turing/bin:$PATH

export LD_LIBRARY_PATH=$QUALNET_HOME/gui/lib/linux64:$basepath/Lib/bin:$basepath/ExtraLib:/home/ubuntu/Program/Qt5.9.5/5.9.5/gcc_64/lib:$LD_LIBRARY_PATH   

cd scenarios/$1
qualnet $2

 

 

 

perl获取当前执行文件的路径

perl获取当前执行文件的路径

如下,想要获得11.pl的路径,相对路径和绝对路径:

zczhangjx@zctech-chengjb:~/智呈监控系统/shell-perl$ ./11.pl
./11.pl
/home/zczhangjx/智呈监控系统/shell-perl/11.pl
代码:

#!/usr/bin/perl
use File::Basename;     
print "$0\n";

use Cwd 'abs_path';
use warnings;
print(abs_path($0)."\n");

Python 使用 os 模块遍历目录 / 获取当前文件的路径

Python 使用 os 模块遍历目录 / 获取当前文件的路径

1. 列出指定目录下所包含的目录

item = os.listdir("/Users/jinchengxie/go")

返回的是一个列表,里面包含了指定目录下所包含的所有的目录

 

2. 递归遍历出指定目录下的所有的目录与文件

item = os.walk("/Users/jinchengxie/go")
print(type(item))
for i in item: // 会不断递归遍历指定路径(这里就是:"/Users/jinchengxie/go")包含的所有目录(包括子级, 次子级 ...)   
  print(i)
  print(type(i))

返回的 item 是一个迭代器,循环遍历该迭代器后得到的是一个个元组,每个元组里包含了三个元素,第一个元素是一个字符串,就是当前所递归到的目录路径, 第二个元素是一个列表,里面包含了当期目录下所包含的目录,第三个元素也是一个列表,里面包含了当前所递归到目录下所包含的所有文件

 

3. 使用 os 模块获取当前文件的路径

import os

path = os.getcwd()

 

关于如何在Python中获取当前执行文件的路径?如何在python中获取当前执行文件的路径信息的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于C++ 获取当前执行文件目录路径以及遍历当前目录所有文件、Linux_联合仿真(获取当前执行文件父路径)、perl获取当前执行文件的路径、Python 使用 os 模块遍历目录 / 获取当前文件的路径的相关信息,请在本站寻找。

本文标签: