lenf 发表于 2018-8-12 14:43:31

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')
  '/home/addam/aa/test'
  >>> os.path.splitext('/home/addam/aa/test.txt')
  '.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()只产生文件路径
页: [1]
查看完整版本: python os.path模块