abspathpython
① 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中文件、模块与包三者之间有什么区别呀麻烦解释的详细点哈,谢谢啦。。。。
Python在处理功能复用和功能颗粒度划分时采用了类、模块、包的结构。这种处理跟C++中的类和名字空间类似,但更接近于Java所采用的概念。
类
类的概念在许多语言中出现,很容易理解。它将数据和操作进行封装,以便将来的复用。
模块
模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般用mole_name.fun_name,和mole_name.var_name进行使用。这样的语义用法使模块看起来很像类或者名字空间,可将mole_name理解为名字限定符。模块名就是文件名去掉.py后缀。下面演示了一个简单的例子:
#moel1.py
def say(word):
print word
#caller.py
import mole1
print __name__
print mole1.__name__
mole1.say('hello')
$ python caller.py
__main__
mole1
hello
例子中演示了从文件中调用模块的方法。这里还展示了一个有趣的模块属性__name__,它的值由Python解释器设定。如果脚本文件是作为主程序调用,其值就设为__main__,如果是作为模块被其他文件导入,它的值就是其文件名。这个属性非常有用,常可用来进行模块内置测试使用,你会经常在一些地方看到类似于下面的写法,这些语句只在作为主程序调用时才被执行。
if __name__ == '__main__':
app = wxapp(0)
app.MainLoop()
模块搜索路径
上面的例子中,当mole1被导入后,python解释器就在当前目录下寻找mole1.py的文件,然后再从环境变量PYTHONPATH寻找,如果这环境变量没有设定,也不要紧,解释器还会在安装预先设定的的一些目录寻找。这就是在导入下面这些标准模块,一切美好事情能发生的原因。
import os
import sys
import threading
...
这些搜索目录可在运行时动态改变,比如将mole1.py不放在当前目录,而放在一个冷僻的角落里。这里你就需要通过某种途径,如sys.path,来告知Python了。sys.path返回的是模块搜索列表,通过前后的输出对比和代码,应能理悟到如何增加新路径的方法了吧。非常简单,就是使用list的append()或insert()增加新的目录。
#mole2.py
import sys
import os
print sys.path
workpath = os.path.dirname(os.path.abspath(sys.argv[0]))
sys.path.insert(0, os.path.join(workpath, 'moles'))
print sys.path
$ python mole2.py
['e:\Project\Python', 'C:\WINDOWS\system32\python25.zip', ...]
['e:\Project\Python\moles', 'e:\Project\Python', 'C:\WINDOWS\system32\python25.zip', ...]
其他的要点
模块能像包含函数定义一样,可包含一些可执行语句。这些可执行语句通常用来进行模块的初始化工作。这些语句只在模块第一次被导入时被执行。这非常重要,有些人以为这些语句会多次导入多次执行,其实不然。
模块在被导入执行时,python解释器为加快程序的启动速度,会在与模块文件同一目录下生成.pyc文件。我们知道python是解释性的脚本语言,而.pyc是经过编译后的字节码,这一工作会自动完成,而无需程序员手动执行。
包
在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。
③ 求python中的os.path.dirname(__file__)具体应用实例
(1).当"print os.path.dirname(__file__)"所在脚本是以完整路径专被运行的,属 那么将输出该脚本所在的完整路径,比如:
python d:/pythonSrc/test/test.py
那么将输出 d:/pythonSrc/test
(2).当"print os.path.dirname(__file__)"所在脚本是以相对路径被运行的, 那么将输出空目录,比如:
python test.py
那么将输出空字符串
④ python怎么根据文件名获得文件路径
获取文件路径可以使用OS模块,代码如下:
importos
srcPath=r"WallReference.pdf"
path=os.path.abspath(srcPath)
print"全路径为:",path
print"路径名,文件名",os.path.split(path)
导入os模块;内
需要容操作的文件;
获取文件的全路径,即带盘符的路径;
输出全路径;
输出路径名和文件名;
⑤ python遍历特定目录的深度问题
你这样抄写很复杂,建袭议用glob模块。
importglob
#获取指定目录下的所有图片
printglob.glob(r"E:/Picture/*/*.jpg")
#获取上级目录的所有.py文件
printglob.glob(r'../*.py')#相对路径
⑥ python中怎样转到指定目录
例如使用IDLE编译python代码时,可以使用os.chdir转到指定目录
import os.
os.getcwd() #get current work direction.
os.chdir('E:\Python_File\Test') #change direction.
在这之后可以直接调用’E:Python_FileTest’目录下的函数。
或者用库调用:
import osimport shutil.
alllist=os.listdir(u"D:\notes\python\资料\")for i in alllist:
aa,bb=i.split(".") if 'python' in aa.lower():
oldname= u"D:\notes\python\资料\"+aa+"."+bb.
newname=u"d:\\newname"+aa+"."+bb.
shutil.file(oldname,newname).
(6)abspathpython扩展阅读:
Python中获得当前目录和上级目录:
获取当前文件的路径:
from os import path
d = path.dirname(__file__) #返回当前文件所在的目录 # __file__ 为当前文件, 若果在ide中运行此行会报错,可改为 #d = path.dirname('.')。
获得某个路径的父级目录:
parent_path = os.path.dirname(d) #获得d所在的目录,即d的父级目录 parent_path = os.path.dirname(parent_path) ##获得parent_path所在的目录即parent_path的父级目录。
获得规范的绝对路径:
abspath = path.abspath(d) #返回d所在目录规范的绝对路径。
⑦ 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))
如果你说的是包的资源文件,可以用上面的方法获取资源文件的绝对路径。
⑧ os.path.abspath和os.getcwd的区别
这个获抄取文件路径中所在的目录。 In [1]: import osIn [2]: os.__file__Out[2]: '/usr/lib/python2.7/os.pyc'In [3]: os.path.dirname(os.__file__)Out[3]: '/usr/lib/python2.7'如果解决了您的问题请点赞!如果未解决请继续追问!
⑨ python 怎么引入上上级目录的文件
和linux类似 “..”表示上一级目录,“.”表示当前目录。
os.path.abspath('../../')
⑩ python获取当前路径
除了os.getcwd()这个方法,还可以通过os.path.abspath('.')的方法获取当前路径,你试试。
但是我无法重现你的问题,所以不知道os.path.abspath('.')是否管用。按照你的表述,我写了下面这个测试程序
==================================
import os
print os.getcwd()
import win32com.client
xlApp = win32com.client.Dispatch('Excel.Application') #打开EXCEL
xlBook = xlApp.Workbooks.Open('c:\\1.xls')
xlSht = xlBook.Worksheets('sheet1')
print str(xlSht.Cells(1,1).Value)
print os.getcwd()
xlBook.Close(SaveChanges=1)
del xlApp
=================================
但是两次输出的地址都是一样的。
是不是你的程序还有那个细节没讲清楚?你可以追问。
希望能帮到你!