python os.path模块

简介:

join:连接字符串数组。


将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串


os.path.join():  将多个路径组合后返回


一、函数说明

1.join()函数

语法:‘sep’.join(seq)


参数说明:


sep:分隔符。可以为空

seq:要连接的元素序列、字符串、元组、字典等


上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串


返回值:返回一个以分隔符sep连接各个元素后生成的字符串


2、os.path.join()函数


语法:  os.path.join(path1[,path2[,......]])


返回值:将多个路径组合后返回


注:第一个绝对路径之前的参数将被忽略


二、实例



#对序列进行操作(分别使用' '与':'作为分隔符)

 

>>> seq1 = ['hello','good','boy','doiido']


>>> print ' '.join(seq1)


hello good boy doiido


>>> print ':'.join(seq1)


hello:good:boy:doiido

 

 

#对字符串进行操作

 

>>> seq2 = "hello good boy doiido"


>>> print ':'.join(seq2)


h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o

 

 

#对元组进行操作

 

>>> seq3 = ('hello','good','boy','doiido')


>>> print ':'.join(seq3)


hello:good:boy:doiido

 

 

#对字典进行操作

 

>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}


>>> print ':'.join(seq4)


boy:good:doiido:hello

 

 

#合并目录

 


>>> import os


>>> os.path.join('/hello/','good/boy/','doiido')


'/hello/good/boy/doiido' 




os和os.path模块


os.listdir(dirname):列出dirname下的目录和文件

os.getcwd():获得当前工作目录

os.curdir:返回但前目录('.')

os.chdir(dirname):改变工作目录到dirname

os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false

os.path.isfile(name):判断name是不是一个文件,不存在name也返回false

os.path.exists(name):判断是否存在文件或目录name

os.path.getsize(name):获得文件大小,如果name是目录返回0L

os.path.abspath(name):获得绝对路径

os.path.normpath(path):规范path字符串形式


os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)


os.path.splitext():分离文件名与扩展名


os.path.join(path,name):连接目录与文件名或目录


os.path.basename(path):返回文件名

os.path.dirname(path):返回文件路径


os.path.abspath(path) #返回绝对路径

os.path.basename(path) #返回文件名


os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。

os.path.dirname(path) #返回文件所在路径(目录)


os.path.exists(path)  #路径存在则返回True,路径损坏返回False

os.path.lexists  #路径存在则返回True,路径损坏也返回True

os.path.expanduser(path)  #把path中包含的"~"和"~user"转换成用户目录

os.path.expandvars(path)  #根据环境变量的值替换path中包含的”$name”和”${name}”

os.path.getatime(path)  #返回最后一次进入此path的时间。

os.path.getmtime(path)  #返回在此path下最后一次修改的时间。

os.path.getctime(path)  #返回path的大小

os.path.getsize(path)  #返回文件大小,如果文件不存在就返回错误

os.path.isabs(path)  #判断是否为绝对路径


os.path.isfile(path)  #判断路径是否为文件

os.path.isdir(path)  #判断路径是否为目录

os.path.islink(path)  #判断路径是否为链接

os.path.ismount(path)  #判断路径是否为挂载点()

os.path.join(path1[, path2[, ...]])  #把目录和文件名合成一个路径

os.path.normcase(path)  #转换path的大小写和斜杠

os.path.normpath(path)  #规范path字符串形式

os.path.realpath(path)  #返回path的真实路径

os.path.relpath(path[, start])  #从start开始计算相对路径

os.path.samefile(path1, path2)  #判断目录或文件是否相同

os.path.sameopenfile(fp1, fp2)  #判断fp1和fp2是否指向同一文件


os.path.samestat(stat1, stat2)  #判断stat tuple stat1和stat2是否指向同一个文件


os.path.split(path)  #把路径分割成dirname和basename,返回一个元组

os.path.splitdrive(path)   #一般用在windows下,返回驱动器名和路径组成的元组

os.path.splitext(path)  #分割路径,返回路径名和文件扩展名的元组

os.path.splitunc(path)  #把路径分割为加载点与文件


os.path.walk(path, visit, arg)  #遍历path,进入每个目录都调用visit函数,visit函数必须有

3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有

文件名,args则为walk的第三个参数


os.path.supports_unicode_filenames  #设置是否支持unicode路径名



python os.path模块常用方法详解


1.   os.path.abspath(path)   

返回path规范化的绝对路径。

>>> import os    

>>> os.path.abspath('pjc.txt')     

'/home/pjc/pjc.txt'

>>> os.path.abspath('c:\\test.csv')         #Windows主机指定完美的路径    

'c:\\test.csv'  

 

2.os.path.split(path)  


将path分割成目录和文件名二元组返回。

>>> os.path.split('/home/pjc/pjc.txt')    

('/home/pjc', 'pjc.txt')

 

3.os.path.dirname(path)  


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

>>> os.path.dirname('/home/pjc/pjc.txt')    

'/home/pjc'

>>> os.path.dirname('/home/pjc/')               

'/home/pjc'     

>>> os.path.dirname('/home/pjc')     

'/home'

 

4.os.path.exists(path)  

如果path存在,返回True;如果path不存在,返回False。     

>>> os.path.exists('c:\\')   

True   

>>> os.path.exists('c:\\csv\\test.csv')   

False 

 

5.os.path.isabs(path)  

如果path是绝对路径,返回True。

 

6.os.path.isfile(path)  

如果path是一个存在的文件,返回True。否则返回False。     

>>> os.path.isfile('c:\\boot.ini')   

True   

>>> os.path.isfile('c:\\csv\\test.csv')   

False   

>>> os.path.isfile('c:\\csv\\')   

False  

 

7.os.path.isdir(path)    

如果path是一个存在的目录,则返回True。否则返回False。

>>> os.path.isdir('c:\\')   

True   

>>> os.path.isdir('c:\\csv\\')   

False   

>>> os.path.isdir('c:\\windows\\test.csv')   

False

>>> os.path.isdir('/home/pjc')    

True




os.path.abspath(path)   #返回path规范化的绝对路径


>>> os.path.abspath('test.csv')

'C:\\Python25\\test.csv'

>>> os.path.abspath('c:\\test.csv')

'c:\\test.csv'

>>> os.path.abspath('../csv\\test.csv')

'C:\\csv\\test.csv'


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


>>> os.path.split('c:\\csv\\test.csv')

('c:\\csv', 'test.csv')

>>> os.path.split('c:\\csv\\')

('c:\\csv', '')


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


>>> os.path.dirname('c:\\csv\test.csv')

'c:\\'

>>> os.path.dirname('c:\\csv')

'c:\\'


os.path.basename(path)


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

>>> os.path.basename('c:\\test.csv')

'test.csv'

>>> os.path.basename('c:\\csv')

'csv' (这里csv被当作文件名处理了)

>>> os.path.basename('c:\\csv\\')

''

os.path.commonprefix(list)

返回list中,所有path共有的最长的路径。

如:

>>> os.path.commonprefix(['/home/td','/home/td/ff','/home/td/fff'])

'/home/td'


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

>>> os.path.exists('c:\\')

True

>>> os.path.exists('c:\\csv\\test.csv')

False


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


os.path.isfile(path)  #如果path是一个存在的文件,返回True。否则返回False。

>>> os.path.isfile('c:\\boot.ini')

True

>>> os.path.isfile('c:\\csv\\test.csv')

False

>>> os.path.isfile('c:\\csv\\')

False


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

>>> os.path.isdir('c:\\')

True

>>> os.path.isdir('c:\\csv\\')

False

>>> os.path.isdir('c:\\windows\\test.csv')

False


os.path.join(path1[, path2[, ...]]) #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。

>>> os.path.join('c:\\', 'csv', 'test.csv')

'c:\\csv\\test.csv'

>>> os.path.join('windows\temp', 'c:\\', 'csv', 'test.csv')

'c:\\csv\\test.csv'

>>> os.path.join('/home/aa','/home/aa/bb','/home/aa/bb/c')

'/home/aa/bb/c'


os.path.normcase(path)

在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。

>>> os.path.normcase('c:/windows\\system32\\')

'c:\\windows\\system32\\'


os.path.normpath(path)

规范化路径。

>>> os.path.normpath('c://windows\\System32\\../Temp/')

'c:\\windows\\Temp'


os.path.splitdrive(path)

>>> os.path.splitdrive('c:\\windows')

('c:', '\\windows')


os.path.splitext(path)

>>> os.path.splitext('c:\\csv\\test.csv')

('c:\\csv\\test', '.csv')


os.path.getsize(path)

 返回path的文件的大小(字节)。


 >>> os.path.getsize('c:\\boot.ini')

   299L





os.path模块

basename('文件路径')  去掉目录路径,返回fname文件名



>>> os.path.basename('/home/addam/aa/test.txt')

'test.txt'

dirname('文件路径')   去掉文件名,返回目录路径



>>> os.path.dirname('/home/addam/aa/test.txt')

'/home/addam/aa'

join() 将分离的各部分组合成一个路径名



>>> os.path.join('/addam','test.txt')    

'/addam/test.txt'


split()

  分割文件名与路径;返回(fpath,fname)元组;如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在


>>> os.path.split('/home/addam/aa/test.txt')

('/home/addam/aa', 'test.txt')


os.path.splitext(“文件路径”)    分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作


>>> os.path.splitext('/home/addam/aa/test.txt')

('/home/addam/aa/test', '.txt')

>>> os.path.splitext('/home/addam/aa/test.txt')[0]

'/home/addam/aa/test'

>>> os.path.splitext('/home/addam/aa/test.txt')[1]

'.txt'

查询函数:主要是判断真假

exists()    指定路径(文件或者目录)是否存在

 >>> os.path.exists('/home/addam/')           

True


>>> os.path.exists('/home/addam/aa/test.txt')

True

>>> os.path.exists('/home/addam/')       

True

>>> os.path.exists('/home/addam/test')

False

isabs()   指定路径是否为绝对路径



>>> os.path.isabs('/home/addam/')

True

isfile()  指定的路径是否为一个文件



>>> os.path.isfile('/home/addam/aa/test.txt')

True

>>> os.path.isfile('/home/addam/aa')     

False


samefile()   两个路径名是否指向同一个文件


  查询文件信息:


getatime()    返回最近访问时间  (浮点型秒数)



>>> os.path.getatime('/home/addam')

1397222714.6862574

  这种时间戳格式的时间看起来太别扭了,怎么办呢?转换一下吧,利用python自带的time模块



>>> time.strftime('%Y_%m_%d %H:%M:%S',time.localtime(os.path.getatime('/home/addam/aa/test.txt')))

'2014_04_11 21:30:30'


getctime()    返回文件创建时间



>>> time.strftime('%Y_%m_%d %H:%M:%S',time.localtime(os.path.getctime('/home/addam/aa/test.txt')))

'2014_04_11 21:25:25



>>> os.path.getctime('/home/addam')

1397222712.2982574



getmtime()    返回最近文件修改时间

   


>>> time.strftime('%Y_%m_%d %H:%M:%S',time.localtime(os.path.getctime('/home/addam/')))         

'2014_04_11 21:25:12'

   


>>> os.path.getmtime('/home/addam')                                           

1397222712.2982574





os.walk这个某块是遍历一个目录常用的模块,它返回一个包含3个元素的元


组:dirpath,dirnames,filenames.


dirpath是以string字符串形式返回该目录下所有的绝对路径;


dirnames是以列表list形式返回每一个绝对路径下的文件夹名字;


filesnames是以列表list形式返回该路径下所有文件名字。




os.walk 方便很多了.这个方法返回的是一个三元tupple(dirpath, dirnames, filenames),


其中第一个为起始路径,


第二个为起始路径下的文件夹,


第三个是起始路径下的文件.


dirpath是一个string,代表目录的路径,


dirnames是一个list,包含了dirpath下所有子目录的名字,


filenames是一个list,包含了非目录文件的名字.这些名字不包含路径信息,如果需要得到全路径,需要使用 os.path.join(dirpath, name).



os.walk()

函数声明:walk(top,topdown=True,onerror=None)


1>参数top表示需要遍历的目录树的路径


2>参数topdown的默认值是"True",表示首先返回目录树下的文件,然后在遍历目录树的子目录.Topdown的值为"False"时,则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件


3>参数onerror的默认值是"None",表示忽略文件遍历时产生的错误.如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历


4>该函数返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名,目录列表和文件列表

os,walk()实例:


import os 

def VisitDir(path):

  for root,dirs,files in os.walk(path):

    for filespath in files:

      print os.path.join(root,filespath)

if __name__=="__main__":

path="/root"

VisitDir(path)




os.path.walk()


函数声明:walk(top,func,arg)


1>参数top表示需要遍历的目录树的路径


2>参数func表示回调函数,对遍历路径进行处理.所谓回调函数,是作为某个函数的参数使用,当某个时间触发时,程序将调用定义好的回调函数处理某个任务.回调函数必须提供3个参数:第1个参数为walk()的参数tag,第2个参数表示目录列表,第3个参数表示文件列表


3>参数arg是传递给回调参数func的元组.回调函数的一个参数必须是arg,为回调函数提供处理参数.参数arg可以为空

os.path.walk()实例:


import os,os.path

def VisitDir(arg,dirname,names):

  for filespath in name:

    print os.path.join(dirname,filespath)

if __name__=="__main__":

path="/root"

os.path.walk(path,VisitDir,())



os.path.walk()与os.walk()产生的文件名列表并不相同.


os.path.walk()产生目录树下的目录路径和文件路径,而


os.walk()只产生文件路径











本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1902761,如需转载请自行联系原作者
目录
相关文章
|
3天前
|
开发者 Python
Python的os模块详解
Python的os模块详解
15 0
|
6天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
7天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
7天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
40 1
|
10天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
49 0
|
11天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
12天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
17天前
|
索引 Python
「Python系列」Python operator模块、math模块
Python的`operator`模块提供了一系列内置的操作符函数,这些函数对应于Python语言中的内建操作符。使用`operator`模块可以使代码更加清晰和易读,同时也能提高性能,因为它通常比使用Python内建操作符更快。
27 0
|
16天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
30 0
|
18天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构