os.system(command)
os.system(”ls -l”),就可以看到”ls”列出了当前目录下的文件
shell常用的命令在python中通常有对应的写法。
ls
python:os.listdir(dirname)
cp
shutil.copy(src,dest),这个函数有两个参数,参数src是指源文件的名字,参数dest则是目标文件或 者目标目录的名字。
如果dest是一个目录名,就会在那个目录下创建一个相同名字的文件。
与shutil.copy函数相类似的是 shutil.copy2(src,dest),不过copy2还会复制最后存取时间和最后更新时间。
不过,shell的cp命令还可以复制目录,python的shutil.copy却不行,第一个参数只能是一个文件。这怎么办?
其 实,python还有个shutil.copytree(src,dst[,symlinks]) 。
参数多了一个symlinks,它是一个布尔值,如果是True的话就创建符号链接。
mv
shutil.move(src,dst)
如果src和dst在 同一个文件系统上,
shutil.move只是简单改一下名字,如果src和dst在不同的文件系统上,shutil.move会先把src复制到 dst,然后删除src文件。
cd
os.chdir(dirname)
把当前工作目录切换到dirname下
cd -
os.getcwd()
返回当前的工作目录路径
os.chroot(dirname)
把dirname作为进程的根目录。和*nix下的chroot命令类似
chmod
os.chmod(path,mode)
更改path的权限位。mode可以是以下值(使用or)的组合:
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
R代表读,W代表写,X代表执行权限。USR代表用户,GRP代表组,OTH代表其它。
os.chown(path,uid,gid)
改变文件的属主。uid和gid为-1的时候不改变原来的属主。
os.link(src,dst)
创建硬连接
os.mkdir(path,[mode])
创建目录。mode的意义参见os.chmod(),默认是0777
os.makedirs(path,[mode])
和os.mkdir()类似,不过会先创建不存在的父目录。
os.readlink(path)
返回path这个符号链接所指向的路径
os.remove(path)
删除文件,不能用于删除目录
os.rmdir(path)
删除文件夹,不能用于删除文件
os.symlink(src,dst)
创建符号链接
shutil.rmtree(path[,ignore_errors[,onerror]])
删除文件夹
真正编写shell脚本的时候还需要注意:
1.环境变量。python的环境变量保存在os.environ这个字典里,可以用普通字典的方法修改它,使用system启动其它程序的时候会自动被继承。比如:
os.environ[”fish”]=”nothing”
不过也要注意,环境变量的值只能是字符串。和shell有些不同的是,python没有export环境变量这个概念。为什么没有呢?因为python没有必要有:-)
2.os.path这个模块里包含了很多关于路径名处理的函数。在shell里路径名处理好像不是很重要,但是在python里经常需要用到。最常用的两个是分离和合并目录名和文件名:
os.path.split(path) -> (dirname,basename)
这个函数会把一个路径分离为两部分,比如:os.path.split(”/foo/bar.dat”)会返回(”/foo”,”bar.dat”)
os.path.join(dirname,basename)
这个函数会把目录名和文件名组合成一个完整的路径名,比如:os.path.join(”/foo”,”bar.dat”)会返回”/foo/bar.dat”。这个函数和os.path.split()刚好相反。
还有这些函数:
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.splitext(path)
把path分离成基本名和扩展名。比如:os.path.splitext(”/foo/bar.tar.bz2″)返回(’/foo/bar.tar’, ‘.bz2′)。要注意它和os.path.split()的区别
3.在os模块有一个很好用的函数叫os.stat()没有介绍,因为os.path模块里包含了一组和它具有同样功能的函数,但是名字更好记一点。
os.path.exists(path)
判断文件或者目录是否存在
os.path.isfile(path)
判断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所指向的文件的大小
4.应用python编写shell脚本经常要用到os,shutil,glob(正则表达式的文件名),tempfile(临时文 件),pwd(操作/etc/passwd文件),grp(操作/etc/group文件),commands(取得一个命令的输出)。前面两个已经基本 上介绍完了,后面几个很简单,看一下文档就可以了。
5.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])
把一个文件夹下的所有文件重命名成10001~10999。可以这样写:
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
分享到:
相关推荐
python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本python编写shell脚本
编写的shell 脚本、perl 脚本、python 脚本 等如果不想被别人看到原文件,可以使用该工具shc ,对脚本文件加密,
使用Python编写,在屏幕上显示一个心型,同时勾画出一朵玫瑰花,可展示给女友看
大多数人会认为Bash(或者其他的shell语言)用起来很方便,但一些强大的语言(比如Python)会给你带来一些其它的好处。首先,我们会使用Python的命令行工具,还会接触到Python的面向对象特性(这篇文章的后半部分会谈到它...
最近用雷电模拟器做脚本,感觉这个模拟器还是非常强大的。结合python,写一些脚本,无往而不利,特来与大家分享一下自己的所得
包含62个文件,主要采用Python语言编写,并辅以Shell脚本,以实现灵活的自动化部署流程。 文件组成: - Python脚本(.py):共24个,构成部署流程的核心部分。 - 配置文件(.xml):17个,用于定义Ambari服务的配置...
Spark 任务,平时编写 Spark 任务时都是封装为一个 Jar 包,然后采用 Shell 脚本形式传入所需参数执行,考虑到本次判断条件逻辑复杂,只用 Shell 脚本完成不利于开发测试,所以调研使用了 Python 和 Java 分别调用 ...
python编程
前言 由于需要在python的shell窗口中直接写函数,而函数代码中需要有print,而通常写入print换行后... 您可能感兴趣的文章:Python IDLE或shell中切换路径的操作shell自动安装python3的脚本写法在python shell中运行pyt
_ (_) ____ _ __ _ _ _|_ /| '_ \ | | | || | / / | |_) || |_| || |/___|| .__/ \__, ||_| | | __/ | |_| |___/如果zsh无法处理某些命令,您的shell现在将退回到python。 因此,您现在可以直接在Shell中执行2+3 。...
该脚本的功能是卸载android手机中安装的所有第三方应用,主要是使用adb shell pm、adb uninstall 命令,所以使用的前提是需要配好adb的环境变量,下面上代码: #!/usr/bin/env python import os def uninstall():...
shell脚本部分: ex:就是ping 各个目的ip10个包,然后获取丢包率和平均延迟时间,在Linux上设置为定时任务,每分钟执行一次。他会把数据写到influxdb服务器上面去,表示hk_vnloss和hk_vn01rtt,字段是loss和rtt,...
使用Python和Shell脚本编写的功能更强大,快速有效且具有交互性的Official Jackpot游戏 目标:猜测计算机随机选择的数字。 机会/生命:5提示:与该数字相比[大,小,太大,太小]。 原始版本: :
虽然你能够通过编写 Unix shell 脚本或 Windows 批处理文件来处理其中的某些任务,但 Shell 脚本更适合移动文件或修改文本数据, 并不适合编写 GUI 应用程序或游戏;虽然你能够使用 C/C++/JAVA 编写程序,但即使编写...
此脚本是用Bash Shell编写,充分利用了其灵活性和广泛支持。它依赖于常见的系统工具,如curl, wget, find, 和grep,确保在多数Linux或Unix环境中都能运行。 配置与使用 设置:用户可以通过修改脚本中的变量来定制...
本安装包是python软件3.8.2版本的windows平台64位操作系统安装包...是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
Daml-shell包装器,用于python脚本... 基本上,它运行此脚本并使解释器处于活动状态,因此您可以继续编写脚本。 sw是此daml-shell包装器的规范实例-必须从该对象调用所有命令。 这是命令列表(及其别名),对我自己
MonkeyRunner 详细介绍及 Python 脚本编写指南 MonkeyRunner 是一个强大的测试工具,提供了一个 API,允许开发者使用 Python 编程语言控制 Android 设备和模拟器。通过 MonkeyRunner,可以编写 Python 程序来安装 ...
主要介绍了Python使用Paramiko模块编写脚本进行远程服务器操作的实例,通过Paramiko能够方便地使用SSH服务,需要的朋友可以参考下
发掘Scons——替代Make的...用Python实现的另一个好处也是Make所不具备的就是很好的跨平台能力,一次编写Build脚本,在多种平台上无需修改即可运行无误,特别是从Unix->Windows这样的移植,如果使用Make则势必要修改。