当前位置:首页 » 网页前端 » python获取脚本绝对路径
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

python获取脚本绝对路径

发布时间: 2022-07-22 05:20:30

‘壹’ 为什么Python读取绝对路径要用正斜杠

在windows读取文件可以用\,但在字符串里面\被作为转义字符使用,那么在描述路径时有两种方式
'c:\\a.txt',转义的方式
r'c:\a.txt',声明字符串不需要转义
这样就实现了用\来访问路径。
而Linux下路径是用/来分割,同样描述路径有两种方式,总是不舒服。
python提供了兼容处理,让Linux风格路径在windows下可用,于是很多时候大家都会选Linux风格。这样简单的脚本可以在两个平台下都能运行。
python对windows路径处理有一个库叫ntpath。
windows用\分割路径是因为当年DOS时代将/作为参数引导使用了,懒惰的某人不愿花时间处理相关解析,于是为了赶工粗暴的使用了\替代。

‘贰’ python文件名获取文件路径

概述

使用os.path.abspath()函数来获取文件绝对路径

解析

文件目录结构如下:

os.path.abspath(path)返回path规范化的绝对路径(但这个路径不一定是真实的路径),如果path仅是一个文件名,使用该函数后返回的路径是当前工作目录路径连接改文件名后所组成的新的路径名。

>>> import os.path

>>> os.path.abspath("a.py")

'C:\Users\Administrator\a.py'

os.path.split(path)将path分割成目录和文件名二元组返回

>>> os.path.split("C:\Users\Administrator\a.py")
('C:\Users\Administrator', 'a.py')

os.path.dirname(path)返回path的目录,其实就是os.path.split(path)的第一个元素

>>> os.path.dirname("C:\Users\Administrator\a.py")
'C:\Users\Administrator'

os.path.basename(path)返回path最后的文件名。如果path以/或结尾,就会返回空值。即os.path.split(path)的第二个元素。

>>> os.path.basename("C:\Users\Administrator\a.py")

'a.py'

os.path.commonprefix(list)返回list中所有path共有的最长的路径,从左向右,相同字符。

os.path.exists(path)如果path存在,返回True;如果path不存在,返回False。

os.path.isabs(path)如果path是绝对路径,返回True。

os.path.normpath(path)规范path字符串形式(规范文件路径)

os.path.isfile(path)判断路径是否为文件,是返回True,否则返回False

os.path.isdir(path)如果path是一个存在的目录,返回True,否则返货False。

os.path.islink(path)是否是链接;但如果系统不支持链接,则返回False。

‘叁’ python 如何获取某个文件的绝对地址

晕,假设你的文件名是filename
os.path.abspath(filename)得到的就是文件名的绝对地址

如果你相得到绝对目录可以这样子
os.path.abspath(os.path.dirname(filename))

‘肆’ 请教一个Python中用os.getcwd或取绝对路径的问题

os.path.abspath这个才是绝对路径的方法啊

os.getcwd是当前目录
比如:os.path.abspath(__file__) --》 当前脚本文件的绝对路径

‘伍’ 在python中,如何获取脚本文件所在路径

用内置函数: __file__


给一个Django的示例,这是获取当前文件的上一级目录的实例。

importos

#:os.path.join(BASE_DIR,...)
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

‘陆’ Python怎样得到资源文件的绝对路径

importsys
importos.path

package="foo"
resource="bar.ini"

#pkgutil.get_data(package,resource)

os.path.abspath(os.path.join(os.path.dirname(sys.moles[package].__file__),resource))

如果你说的是包的资源文件,可以用上面的方法获取资源文件的绝对路径。

‘柒’ 如何获得Python脚本所在目录的位置

如果想得到脚本的路径,那么得这样:
os.path.split(os.path.realpath(__file__))[0]
其中__file__虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用os.path.realpath()函数来处理一下。
os.getcwd()是不对的,只能得到当前目录位置

‘捌’ 如何使用Python获取某个路径下面所有文件的绝对路径以及其他操作

import os
dir="e:\\"
for root,dirs,files in os.walk(dir):
for file in files:
print os.path.join(root,file)

‘玖’ 如何用python查询文件路劲

最近在用Python脚本处理文件夹下面的文件名的搜索和重命名。其中碰到如何递归遍历文件夹下面所有的文件,找到需要的文件,并且重命名的问题。其实如果看看Python的document,还是比较简单的,这里直接给出使用方法,免得大家还要花精力去查找。

环境:
文件夹结构:
----path1
----path1-1
----path1-1.1.txt
----path1-2
----path1.1.txt
----path2
----recursiveDir.py
文件夹结构如上所示。

代码分析(recursiveDir.py):

[python] view plain
<span style="font-size:18px;">import os

'''''
本脚本用来演示如何遍历py脚本所在文件夹下面所有的文件(包括子文件夹以及其中包含的文件)。
重点演示如何获取每个文件的绝对路径。注意os.path.join(dirpath, filename)的用法。
'''

rootdir = os.getcwd()
print('rootdir = ' + rootdir)

for (dirpath, dirnames, filenames) in os.walk(rootdir):
#print('dirpath = ' + dirpath)
for dirname in dirnames:
print('dirname = ' + dirname)
for filename in filenames:
#下面的打印结果类似为:D:\pythonDirDemo\path1\path1-1\path1-1.1.txt
print(os.path.join(dirpath, filename))
if(filename=='path1-1.1.txt'):
os.chdir(dirpath)
#os.rename(os.path.join(dirpath, filename), dirpath + os.sep + 'path1-1.1.new.txt')
os.rename('path1-1.1.txt', 'path1-1.1.new.txt')
#os.remove(os.path.join(dirpath, filename))
#下面的输出为fileName = path1-1.1.txt,并未包含绝对路径,所以需要使用os.path.join来链接,获取绝对路径
print('fileName = ' + filename)
print('------------------one circle end-------------------')</span>

所以可以看到程序中使用os.path.join(dirpath, filename)来拼接出绝对路径出来。注意下面的重命名用法,可以将工作目录切换到os.chdir(dirpath),这样就可以直接用os.rename(oldfile, newfile).Python会自动到dirpath下面查找oldfile并且重命名为newfile。注意工作目录的含义:在Python的GUI中,使用os.getcwd()可以获取到当前工作目录。测试如下:

[html] view plain
<span style="font-size:18px;">>>> os.chdir('D:')
>>> os.getcwd()
'D:\\pythonDirDemo\\path1\\path1-1'
>>> os.chdir('D:\\')
>>> os.getcwd()
'D:\\'</span>

可见却是可以用chdir改变工作目录。这个代码只是在重命名的时候用到的小技巧而已,大家知道有这个东西就行了,不过调用chdir之后,后续再获取getcwd()就会被影响,所以警惕。

‘拾’ python中的绝对路径和相对路径均如何理解呢

Python中的绝对路径和其他语言并无区别。
Python中的相对路径则有所不同,一般语言的相对路径的父目录指的是文件所在目录,而Python的相对路径的父目录指的是当前脚本执行目录。举个简单的例子:我有一个放在/xyz/bin目录下的脚本 test.py。那么他的绝对路径就是/xyz/bin,如果你在你的test脚本中使用了相对路径的话,那么test.py中的相对路径是根据脚本执行时你的当前目录所决定的。比如,如果你在/xyz/bin目录下还有一个文件test.txt,这是test.py中所使用的文件,那么在/xyz/bin目录下执行./test.py是没有问题的。但是如果你在其他目录执行python /xyz/bin/test.py,如果其他目录没有test.txt文件,那么必然会报错。因为此时相对路径的父目录已经不是/xyz/bin了,自然找不到/xyz/bin/test.txt。