python文件名获取文件路径

请教如何根据某一个文件名获取改文件的绝对路径,例如我遍历/home/test目录,在/home/test/date/20150616/目录下找到了文件A,怎么打印出A文件... 请教如何根据某一个文件名获取改文件的绝对路径,例如我遍历/home/test目录,在/home/test/date/20150616/目录下找到了文件A,怎么打印出A文件的路径?试了os.getcwd()打印的是py脚本所在的路径,急求! 展开
 我来答
泪reni
2018-07-21 · TA获得超过2485个赞
知道答主
回答量:15
采纳率:0%
帮助的人:2091
展开全部

概述

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

解析

文件目录结构如下:

假设app.py中想读取config.ini文件的内容,首先app.py需要知道config.ini的文件路径,从目录结构上可以看出,config.ini与app.py的父目录同级,也就是获取到app.py父目录(bin文件夹的路径)的父目录(config文件夹路径)的绝对路径再拼上config.ini文件名就能获取到config.ini文件:

首先,在app.py中测试一下:

import os

def load_file():

# 获取当前文件路径

current_path = os.path.abspath(__file__)

# 获取当前文件的父目录

father_path = os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".")

# config.ini文件路径,获取当前目录的父目录的父目录与congig.ini拼接

config_file_path=os.path.join(os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".."),'config.ini')

print('当前目录:' + current_path)

print('当前父目录:' + father_path)

print('config.ini路径:' + config_file_path)

load_file()

#out:

从结果中可以看到一切都正常,没有什么问题,假如现在需要从main.py中执行app.py的load_file()方法呢?

来测试一下:

main.py(处于同级目录):

from bin.app import load_file

if __name__=='__main__':

load_file()

#out:

可以看到,获取的路径是完全没有问题的

拓展内容

python os.path 常用模块介绍

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。

bdwisyou7d
2015-06-16 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1069万
展开全部
import os
for r,ds,fs in os.walk("/home/test"):
    for f in fs:
       fn = os.path.join(r,f)
       if f=="A":
          print os.path.abspath(fn)

给你写了一段代码。这个应该应该清楚 了吧。 

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yycgis
2015-12-15 · TA获得超过8267个赞
知道大有可为答主
回答量:6831
采纳率:63%
帮助的人:1589万
展开全部

获取文件路径可以使用OS模块,代码如下:

import os
srcPath=r"WallReference.pdf"
path=os.path.abspath(srcPath)
print "全路径为:",path
print "路径名,文件名",os.path.split(path)
  1. 导入os模块;

  2. 需要操作的文件;

  3. 获取文件的全路径,即带盘符的路径;

  4. 输出全路径;

  5. 输出路径名和文件名;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
newtree狮子
2015-06-16 · 超过30用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:48.8万
展开全部
步骤:
1、找tes下面的文件,if os.path.isfile(文件名) == False如果文件是文件夹,目录=目录+文件夹名
2、然后继续找,直到找到你要的A(非文件夹),把A和目录一起存到字典里或者print出来
然后就OK了~~~记得不一定A只存在一个文件夹下面所以要一直找,直到找完所有的~~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式