本文目录一览:
- 1、python读取文件相对路径
- 2、只知道文件名的情况下,怎么用python获取所有同名文件的路径?
- 3、python文件名获取文件路径
- 4、python-pyinstaller、打包后获取路径、读取同路径的配置文件
- 5、python获取当前路径
python读取文件相对路径
比如你在和当前文件并列的"game"文件夹下有"score.txt"文件,那么相对路径表示为:
"game/score.txt"
就是和这个py文件并列的文件夹前面不需要加"/",后面的都需要加,别忘了加上后缀。
例:
with open("game/score.txt", mode = "a+", encoding = "utf-8") as f:
score = f.readline()
只知道文件名的情况下,怎么用python获取所有同名文件的路径?
获取文件路径可以使用OS模块,代码如下:
import os
srcPath=r"WallReference.pdf"
path=os.path.abspath(srcPath)
print "全路径为:",path
print "路径名,文件名",os.path.split(path)
导入os模块;
需要操作的文件;
获取文件的全路径,即带盘符的路径;
输出全路径;
输出路径名和文件名;
python文件名获取文件路径
概述
使用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。
python-pyinstaller、打包后获取路径、读取同路径的配置文件
使用pyinstaller可以把.py文件打包为.exe可执行文件,命令为:
打包后有两个文件夹,一个是dist,另外一个是build,可执行文件在dist文件夹里面,但是会有许多依赖是独立文件存在
使用-F参数后,打包的可执行文件是一个整体,只有一个.exe文件。
获取文件路径的方式有四种,可以在打包成exe文件后,获取.exe文件的当前路径
在ide界面的执行结果如下:
在exe文件的执行结果为:我是把exe文件放到桌面运行的。
python获取当前路径
来自:
import os,sys
使用sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath( file )、os.path.realpath( file )
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]的输出还会变化:
如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出“C:\test\getpath\libarary.zip”;
如果在setup.py里面指定zipfile=None参数,依赖库就会被打包到exe文件里面,那么sys.path[0]会输出“C:\test\getpath\getpath.exe”。
os.getcwd() “D:\”,取的是起始执行目录
sys.path[0]或sys.argv[0] “D:\python_test”,取的是被初始执行的脚本的所在目录
os.path.split(os.path.realpath( file ))[0] “D:\python_test”,取的是 file 所在文件test_path.py的所在目录
正确获取当前的路径: