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,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
62 4
|
26天前
|
Python
Python Internet 模块
Python Internet 模块。
121 74
|
2月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
123 63
|
2月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
5天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
19 3
|
2月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
2月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
49 5
|
2月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
2月前
|
JavaScript 前端开发 Python
python中的OS模块的基本使用
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。博客分享前端技术及全栈开发经验,持续更新中,期待您的关注和支持!🎉🎉🎉
44 0
|
3月前
|
存储 JSON 数据格式
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
51 0