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

         

  • 相关阅读:
    mysql命令集锦
    linux 删除文件名带括号的文件
    linux下的cron定时任务
    struts2文件下载的实现
    贴一贴自己写的文件监控代码python
    Service Unavailable on IIS6 Win2003 x64
    'style.cssText' is null or not an object
    "the current fsmo could not be contacted" when change rid role
    远程激活程序
    新浪图片病毒
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/10414174.html
Copyright © 2011-2022 走看看