python3获取当前目录的实现方法

1. 以前的方法

如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。

如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path。

具体来说,如果你在C:\test目录下执行python getpath\getpath.py,那么os.getcwd()会输出“C:\test”,sys.path[0]会输出“C:\test\getpath”。

更特别地,如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化:

1.如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出“C:\test\getpath\libarary.zip”;

2.如果在setup.py里面指定zipfile=None参数,依赖库就会被打包到exe文件里面,那么sys.path[0]会输出“C:\test\getpath\getpath.exe”。

(Edit Section ↓)

2.正确的方法

但以上这些其实都不是脚本文件所在目录的位置。

比如C:\test目录下还有一个名为sub的目录;C:\test目录下有getpath.py,sub目录下有sub_path.py,getpath.py调用sub_path.py;我们在C:\test下执行getpath.py。如果我们在sub_path.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径“C:\test”,因为Python虚拟机是从getpath.py开始执行的。如果想得到sub_path.py的路径,那么得这样:

os.path.split(os.path.realpath(__file__))[0]

[Get Code]

其中__file__虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用os.path.realpath()函数来处理一下。也即在这个例子里,os.path.realpath(__file__)输出是“C:\test\sub\sub_path.py”,而os.path.split(os.path.realpath(__file__))[0]输出才是“C:\test\sub”。

(Edit Section ↓)

3.实例说明

总之,举例来讲,os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别是这样的:

假设目录结构是:

 C:\test
 |
 [dir] getpath
 |
 [file] path.py
 [dir] sub
  |
  [file] sub_path.py

然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是:

•os.getcwd() “C:\test”,取的是起始执行目录
•sys.path[0]或sys.argv[0] “C:\test\getpath”,取的是被初始执行的脚本的所在目录
•os.path.split(os.path.realpath(__file__))[0] “C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目录

PS:下面看下python3获取当前目录和上级目录

d = path.dirname(__file__) #返回当前文件所在的目录
# __file__ 为当前文件

获得某个路径的父级目录:

parent_path = os.path.dirname(d) #获得d所在的目录,即d的父级目录
parent_path = os.path.dirname(parent_path) ##获得parent_path所在的目录即parent_path的父级目录

获得规范的绝对路径:

abspath = path.abspath(d) #返回d所在目录规范的绝对路

总结

以上所述是小编给大家介绍的python3获取当前目录的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Python3 导入上级目录中的模块实例

    python导入同级别模块很方便: import xxx 要导入下级目录页挺方便,需要在下级目录中写一个__init__.py文件 from dirname import xxx 要导入上级目录,可以使用 sys.path 首先 sys.path 的作用是:当使用import语句导入模块时,解释器会搜索当前模块所在目录以及sys.path指定的路径去找需要import的模块 所以改变思路,直接把上级目录加到 sys.path 里 import sys sys.path.append('../')

  • python3实现指定目录下文件sha256及文件大小统计

    有时会统计某个目录下有哪些文件,每个文件的sha256及文件大小等相关信息,这里用python3写了个脚本用来实现此功能,此脚本可跨平台,同时支持windows和linux,脚本(get_dir_file_info.py)内容如下: import os import sys import hashlib def Usage(): ''' usage description ''' num = len(sys.argv) if num != 3: print("Error: please inpu

  • Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法

    本文实例讲述了Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法.分享给大家供大家参考.具体实现方法如下: # 这里将一个文件树中的所有文件和子目录归档到一个tar归档文件,然后压缩 import tarfile, os # compression表示压缩算法,gz表示gzip颜色,bz2表示bzip2压缩, # 空字符串表示不压缩 # folder_to_backup: 要归档的文件夹 # dest_folder 表示目标文件夹 def make_tar(folder_to

  • python3获取当前文件的上一级目录实例

    因为使用python+selenium有时候需要获取当前文件的上一级目录,找了一段时间找到了,在此记录下来: os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 这个是获取当前文件的上一级目录 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  这个是把路径添加到系统的环境变量 os.path.abspath(os.path.

  • python3获取当前目录的实现方法

    1. 以前的方法 如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数. 如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得.实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path. 具体来说,如果你在C:\test目录下执行python getpath\ge

  • Python3遍历目录树实现方法

    本文实例讲述了Python3遍历目录树的方法.分享给大家供大家参考.具体实现方法如下: import os, fnmatch # 检查一个目录,后者某个包含子目录的目录树,并根据某种模式迭代所有文件 # patterns如:*.html,若大小写敏感可写*.[Hh][Tt][Mm][Ll] # single_level 为True表示只检查第一层 # yield_folders 表示是否显示子目录,为False只遍历子目录中的文件, # 但不返回字母名 def all_files(root, p

  • jsp中获取当前目录的方法

    本文实例讲述了jsp中获取当前目录的实现方法,分享给大家供大家参考.具体实现方法如下: 1.利用System.getProperty()函数获取当前路径: 复制代码 代码如下: System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径: 复制代码 代码如下: File directory = new File("");//设定为当前文件夹 try

  • jsp编程获取当前目录下的文件和目录及windows盘符的方法

    本文实例讲述了jsp编程获取当前目录下的文件和目录及windows盘符的方法.分享给大家供大家参考,具体如下: (一)获取当前目录下的文件和目录 知识点 1 file对象的应用 2 listFiles()方法 3 isDirectory()方法,isFile()方法 判断是否为目录或是文件 4转换字符串方法toString (1)创建一个file对象dir, 然后用listFiles()方法返回当前目录下所有文件 String path=request.getRealPath("/")

  • python3 http提交json参数并获取返回值的方法

    如下所示: import json import http.client connection = http.client.HTTPSConnection('spd.aiopos.cn') headers = {'Content-type': 'application/json'} values = { 'acct_pan':'6226011****83678', 'acct_name':'张三', 'cert_type':'01', 'cert_id':'37293019****95', 'p

  • Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法

    本文实例讲述了Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法.分享给大家供大家参考,具体如下: 做个笔记 (python 3.6,django 2.0) def get_url(outer_order_id): refundId = get_refundId(outer_order_id) host_url = 'http://test.shequ.com/order/agreeRefund?' reason_list = ['商品已售完','重复订单','没有骑手接单

  • python3使用pandas获取股票数据的方法

    如下所示: from pandas_datareader import data, wb from datetime import datetime import matplotlib.pyplot as plt end = datetime.now() start = datetime(end.year - 1, end.month, end.day) alibaba = data.DataReader('BABA', 'yahoo', start, end) alibaba['Adj Clo

  • Python3 获取一大段文本之间两个关键字之间的内容方法

    用re或者string.find.以下是re代码 import re #文本所在TXT文件 file = '123.txt' #关键字1,2(修改引号间的内容) w1 = '123' w2 = '456' f = open(file,'r') buff = f.read() #清除换行符,请取消下一行注释 #buff = buff.replace('\n','') pat = re.compile(w1+'(.*?)'+w2,re.S) result = pat.findall(buff) pr

  • Python3获取电脑IP、主机名、Mac地址的方法示例

    本文实例讲述了Python3获取电脑IP.主机名.Mac地址的方法.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 ''' Created on 2019年4月11日 @author: Administrator ''' import socket import uuid # 获取主机名 hostname = socket.gethostname() #获取IP ip = socket.gethostbyname(hostname) # 获取

  • Python3使用Selenium获取session和token方法详解

    一.背景说明 之前写了一款简单的api模糊测试工具,之前系统可以使用http Base认证现在改成session形式并加上了token. 最简单的改造方法,是自己先在浏览器手动登录,然后提取出session和token(系统token在整个会话期间可重复使用)填到模糊测试工具中即可.但这种非全自动化的方式不到万不得已不想用. 最直接的方法,最使用requests按登录流程依次发包登录即可.但其中的难点是密码是加密提交的,询问开发人员说是DES加密:DES加密不难,但是用不同的语言编写的加密算法与

随机推荐