zoukankan      html  css  js  c++  java
  • python编写shell脚本

    模块

      os模块和shutil模块主要用于在python中执行一些Linux相关的操作,其中 os.system(command) 可以直接运行Linux命令,如os.system('ls')。

    不过,通常这条命令不需要用到。因为shell常用的那些命令在python中通常有对应而且同样简洁的写法。上述命令可用 os.listdir(”/”) 代替

    import os
    import shutil
    
    # ls --> listdir
    os.listdir(”/”)
    
    # cp --> copy | copy2 | copytree
    shutil.copy(src,dest) # 参数src是指源文件的名字,参数dest则是目标文件或者目标目录的名字。 如果dest是一个目录名,就会在那个目录下创建一个相同名字的文件
    shutil.copy2(src,dest) # 同上,不过copy2还会复制最后存取时间和最后更新时间
    shutil.copytree(src,dst[,symlinks]) # src,dst同上,symlinks是一个布尔值,如果是True的话就创建符号链接,用于复制目录
    
    # mv --> move
    shutil.move(src,dst) # 移动文件
    
    # cd --> chdir
    os.chdir(dirname) # dirname为指定目录
    
    # pwd --> getcwd
    os.getcwd() # 得到当前环境变量
    
    # chroot --> chroot
    os.chroot(dirname) # 将dirname作为进程的根目录
    
    # remove --> remove,remove -r --> rmdir
    os.remove(path) # 删除文件,不能用于删除目录
    os.rmdir(path) # 删除文件夹
    
    # 更改权限
    os.chmod(path,mode)
    '''
    更改path的权限位。mode可以是以下值(使用or连接)的组合:
    R代表读,W代表写,X代表执行权限。USR 代表用户,GRP代表组,OTH代表其它
    os.S_ISUID
    os.S_ISGID
    os.S_ENFMT
    os.S_ISVTX
    os.S_IREAD
    os.S_IWRITE
    os.S_IEXEC
    os.S_IRWXU
    os.S_IRUSR
    os.S_IWUSR
    os.S_IXUSR
    os.S_IRWXG
    os.S_IRGRP
    os.S_IWGRP
    os.S_IXGRP
    os.S_IRWXO
    os.S_IROTH
    os.S_IWOTH
    os.S_IXOTH
    '''
    
    # mkdir
    os.mkdir(path,[mode]) # 创建目录。mode的意义参见os.chmod(),默认是0777
    os.makedirs(path,[mode]) # 同上,不过会先创建不存在的父目录。
    常用命令
    import os
    
    # 常用
    os.path.join(dirname,basename) # 将目录名和文件名组合成一个完整的路径名,比如:os.path.join(”/foo”,”bar.dat”)会返回”/foo/bar.dat”。
    os.path.split(path) # 得到(目录,文件名),比如:os.path.split(”/foo /bar.dat”)会返回(”/foo”,”bar.dat”)
    
    os.path.splitext(path) # 把path分离成基本名和扩展名。比如:os.path.splitext(”/foo /bar.tar.bz2″)返回(’/foo/bar.tar’, ‘.bz2′)
    
    os.path.exists(path) # 判断文件或者目录是否存在
    
    os.path.isfile() # 判断path所指向的是否是一个普通文件,而不是目录
    os.path.isdir(path) # 判断path所指向的是否是一个目录,而不是普通文件
    
    # 其他
    os.path.islink(path) # 判断path所指向的是否是一个符号链接
    os.path.ismount(path) # 判断path所指向的是否是一个挂接点(mount point)
    os.path.getatime(path) # 返回path所指向的文件或者目录的最后存取时间。
    os.path.getmtime(path) # 返回path所指向的文件或者目录的最后修改时间
    os.path.getctime(path) # 返回path所指向的文件的创建时间
    os.path.getsize(path) # 返回path所指向的文件的大小
    os.path.abspath(path) # 把path转成绝对路径
    os.path.expanduser(path) # 把path中包含的”~”和”~user”转换成用户目录
    os.path.expandvars(path) # 根据环境变量的值替换path中包含的”$name”和”${name}”,比如环境变量 FISH=nothing,那os.path.expandvars(”$FISH/abc”)会返回”nothing/abc”
    os.path.normpath(path) # 去掉path中包含的”.”和”..”
    os.path
    import os
    
    os.chown(path,uid,gid) # 改变文件的属主。uid和gid为-1的时候不改变原来的属主。
    os.link(src,dst) # 创建硬连接
    os.readlink(path) # 得到path这个符号链接所指向的路径
    os.symlink(src,dst) # 创建符号链接
    其他

    练习

    sys.argv是一个列表,保存了python程序的命令行参数。其中 sys.argv[0]是程序本身的名字。

    import sys,os.path,shutil
    
    for f in os.listdir(sys.argv[1]):
      shutil.copy(os.path.join(sys.argv[1],f),sys.argv[2])
    复制指定文件夹下的所有文件夹及文件
    import os.path,sys
    
    dirname=sys.argv[1]
    i=10001
    for f in os.listdir(dirname):
      src=os.path.join(dirname,f)
      if os.path.isdir(src):
        continue
      os.rename(src,str(i))
      i +=1
    
     
    把一个文件夹下的所有文件重命名成 10001~10999

    参考:https://www.cnblogs.com/momoyan/p/9145742.html

         

  • 相关阅读:
    “耐撕”团队 2016.03.25 站立会议
    [Java面试二]Java基础知识精华部分.
    [Java面试一]面试复习大纲.
    [Java面试四]Strust2总结及在面试中的一些问题.
    [Java面试五]Spring总结以及在面试中的一些问题.
    [Java面试六]SpringMVC总结以及在面试中的一些问题.
    [Java面试七]Mybatis总结以及在面试中的一些问题.
    Hibernate总结以及在面试中的一些问题.
    脚本语言知识总结.
    浏览器跨域问题.
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/10414174.html
Copyright © 2011-2022 走看看