模块

  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

python编写shell脚本的更多相关文章

  1. python编写shell脚本详细讲解

    python编写shell脚本详细讲解 那,python可以做shell脚本吗? 首先介绍一个函数: os.system(command) 这个函数可以调用shell运行命令行command并且返回它 ...

  2. 编写Shell脚本的最佳实践

    编写Shell脚本的最佳实践 http://kb.cnblogs.com/page/574767/ 需要记住的 代码有注释 #!/bin/bash # Written by steven # Name ...

  3. 编写shell脚本遇到的问题

    运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”: 原因是因为Linux下的换行符是 \n 而你在 ...

  4. 在windows下编写shell脚本

    注意两点: 1.第一行:#!/bin/bash 2.将文档格式转换为unix,因为在windows下编写shell脚本回车符是\n\r,而linux下的回车符是\n,所以在linux下运行脚本的时候, ...

  5. linux 的基本操作(编写shell 脚本)

    终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要.下面笔者就带你正式进入shell脚本的世界吧. 到现 ...

  6. Python 调用 Shell脚本的方法

    Python 调用 Shell脚本的方法 1.os模块的popen方法 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出. > ...

  7. CentOS下编写shell脚本来监控MySQL主从复制的教程

    这篇文章主要介绍了在CentOS系统下编写shell脚本来监控主从复制的教程,文中举了两个发现故障后再次执行复制命令的例子,需要的朋友可以参考下 目的:定时监控MySQL主从数据库是否同步,如果不同步 ...

  8. [转帖]编写shell脚本所需的语法和示例

    编写shell脚本所需的语法和示例 https://blog.csdn.net/CSDN___LYY/article/details/100584638 在说什么是shell脚本之前,先说说什么是sh ...

  9. linux环境下编写shell脚本实现启动停止tomcat服务

    第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat ...

随机推荐

  1. vue路由守卫(全局守卫)

    router.beforeEach((to,from,next)=>{}) 回调函数中的参数, to:进入到哪个路由去, from:从哪个路由离开, next:函数,决定是否展示你要看到的路由页 ...

  2. SignalR 实时推送消息

    业务场景 以前做过一个东西,就是当数据库有数据更新的时候,能够自动更新到前台,那时候signalr还没出现的时候,需要自己实现轮询读库,对于数据库和程序都是比较郁闷的事情.现在利用SignalR解决数 ...

  3. 在'for'循环中获取索引

    ints = [8, 23, 45, 12, 78] 当使用循环遍历它时,在这种情况下如何访问循环索引,从1到5? 最普遍的办法是设置索引变量(通常在C或PHP等语言中使用),但这被认为是非pytho ...

  4. 安装SQL Server 2008时,安装程序配置检查RebootRequiredCheck时失败

    a .重启机器,再进行安装,如果发现还有该错误,请按下面步骤b.在开始->运行中输入regeditc.到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ...

  5. BZOJ-9-3295: [Cqoi2011]动态逆序对

    题意:N个数的排列,M次操作,每次求当前的逆序对数量并删掉一个数 思路 :动态说的很到位.hiahia ... 最初一直没想明白为什么 大佬的cdq 中统计了两次. 先定义 给出的删除的点的 t 值依 ...

  6. [POJ2559]Largest Rectangle in a Histogram (栈)

    题意 如图所示,在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积(图中的阴影部分的面积即所求答案). 思路 一个很老的,也是一个很好的题目. 维护一个单调栈即可. 不过在洛谷SP18 ...

  7. [POJ2965]The Pilots Brothers' refrigerator (搜索/位运算)

    题意 游戏“The Pilots Brothers:跟随有条纹的大象”有一个玩家需要打开冰箱的任务. 冰箱门上有16个把手.每个手柄可以处于以下两种状态之一:打开或关闭.只有当所有把手都打开时,冰箱才 ...

  8. SVN服务器搭建及使用

    .SVN(全称Subversion)是优秀的版本控制工具,与微软的TFS相比,有如下优势:开源(免费),支持多种操作系统. 本次我搭建的服务器采用:VisualSVN-Server-3.6.1-x64 ...

  9. 如何根据checkbox的值进行勾选!例:我要勾选value等于scanbuy,terminal的复选框!

    微商城 随手购 自助购 <div class="controls" id="client"> <input id="mall&quo ...

  10. bootstrap_响应式布局简介_媒体查询_媒体选择器_2x3x图

    响应式布局 在不同设备上,同一网页根据设备特性(显示屏大小,分辨率)呈现不同的布局样式. 思考: 获取设备相关信息 将屏幕划分为几个区域 给需要变化的结构写多套 css 样式 媒体查询 常用写法 @m ...