`
chakey
  • 浏览: 363837 次
  • 性别: Icon_minigender_1
  • 来自: 水星
社区版块
存档分类
最新评论

使用python编写脚本(丰富shell的功能)

阅读更多
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 强大的库支持来完成更复杂的任务。无论是简单的文件操作还是复杂的系统管理任务,Python 都能提供...

    Python-何用Python代替Bash脚本指南

    然而,随着Python的普及和功能增强,越来越多的开发者开始考虑使用Python来替代Bash脚本。Python提供了更强大的数据处理能力、更好的可读性和维护性,以及丰富的第三方库支持。下面,我们将深入探讨为何以及如何用...

    Python-使用Python和Shell编写的持续集成系统

    标题 "Python-使用Python和Shell编写的持续集成系统" 暗示了这是一个关于利用Python和Shell脚本创建持续集成(Continuous Integration, CI)系统的项目。持续集成是一种软件开发实践,其中开发人员频繁将他们的代码...

    第一步是使用Python编写一些以前使用shell执行的脚本,如MySQL安装、初始

    第一步是使用Python编写一些以前使用shell执行的脚本,如MySQL安装、初始配置等。第二部分是在AWX_learn py AWX中关联和使用相应的py文件

    pycharm中执行window环境python脚本多条shell命令

    在Windows环境中使用PyCharm编写Python脚本并执行shell命令时,由于Windows与Linux等其他操作系统的命令差异,会遇到一些特殊的问题。本文将详细介绍如何在Windows环境下通过PyCharm执行shell命令,并解决实际开发...

    ros2脚本实例,shell脚本和python脚本示例

    在ROS2中,shell脚本通常用于系统级的管理和部署任务,而Python脚本则用于实现具体的功能模块。 在学习和使用这些脚本时,你需要了解ROS2的基本概念,如节点、话题、服务、参数等,以及如何使用rclpy库进行Python...

    在python 中实现运行多条shell命令

    本文介绍了在Python中执行多条Shell命令的几种常见方法,包括使用`subprocess`模块、`os`模块以及编写Shell脚本并调用。每种方法都有其适用场景和局限性,开发者应根据具体需求选择最合适的方法。同时,在处理外部...

    python+adb实现安卓手机自动化钉钉打卡功能

    在这个项目中,我们将用Python编写脚本来控制安卓设备执行特定的任务。 **ADB** 是Google开发的一个命令行工具,用于与安卓设备进行通信。通过USB连接或Wi-Fi,开发者可以使用ADB调试应用、传输文件、运行命令以及...

    Python-Ergonomica一种采用Python编写的跨平台shell语言

    Ergonomica利用Python的这些特性,使用户能够利用Python的标准库和第三方库来编写复杂的shell脚本,从而在执行系统管理任务时提高效率。 ### 2. 跨平台兼容性 Ergonomica设计为跨平台,意味着它可以在Windows、...

    【Python】雷电模拟器脚本说明[附代码]

    "Python雷电模拟器脚本说明" 以下是基于给定的文件信息生成的知识点: 一、雷电模拟器的文件共享机制 雷电模拟器有一个共享...然后,用户可以使用Python脚本来控制雷电模拟器,实现自动化测试和自动化部署等功能。

    基于python的monkey自动化脚本

    【Python的Monkey自动化脚本】 ...以上就是使用Python编写Monkey自动化脚本的一些关键点。通过这种方式,开发者可以更加灵活地进行应用程序的稳定性测试,提高测试覆盖率,减少因为用户意外操作导致的问题。

    Python编写的一个心型和玫瑰花的文件

    使用Python编写,在屏幕上显示一个心型,同时勾画出一朵玫瑰花,可展示给女友看

    ftp.zip_FTP python_Python脚本_ftp上传python_python ftp_shell脚本

    在这个场景中,我们关注的是如何使用Python来实现FTP功能,特别是通过编写脚本来自动化文件上传的过程。`ftp.zip`这个压缩包中包含了一个名为`ftp.py`的Python脚本,它应该是一个实现了FTP文件上传功能的实用工具。 ...

    用Python加持Linux Shell脚本编写CSV文件即可完美解决脚本中的返回

    将Python集成到Linux Shell脚本中,可以利用`python -c`或`python3 -c`命令执行Python代码片段,或者编写一个Python脚本并用`python script.py`来运行。例如: ```bash #!/bin/bash # 使用Python处理CSV python3 -...

    Python脚本编辑器

    下面我们将详细介绍Python脚本编辑器的主要特点和功能,以及如何使用IDLE进行Python编程。 1. **代码编辑**:Python脚本编辑器提供了一个文本编辑区域,用于编写Python代码。在IDLE中,你可以输入、保存和修改...

    python服务器资源、服务巡检脚本 输出到execl标红

    标题中的“python服务器资源、服务巡检脚本 输出到execl标红”表明这是一个使用Python编写的自动化脚本,它的主要功能是对服务器的资源使用情况和服务状态进行定期检查,并将检查结果导出到Excel文件中,其中存在...

    生产环境,线上使用)shell python运维web脚本db 安全脚本.7z

    Python脚本在安全方面也有广泛的应用,比如可以编写脚本来进行恶意软件检测、密码强度评估或者网络扫描。 "web"目录中的脚本可能与Web服务器的管理相关,包括但不限于Apache、Nginx等。这些脚本可能用于配置、重启...

    基于Python和Shell脚本实现的Siri语音控制Kodi播放源码设计

    该项目是一个使用Python和Shell脚本编写的Siri语音控制Kodi播放的源码设计,共计20个文件,包括5个Python脚本、4个Markdown文档、2个Jupyter Notebook、2个Shell脚本、2个配置文件、1个Git忽略规则、1个JSON文件、1...

    Python-用busybox加持的功能更加强大的adbshell不需要root

    4. **使用Python与ADB通信**:通过Python编写脚本,利用adbkit或android-adb库来发送命令到设备。例如,你可以使用`adb.shell()`方法来执行shell命令。 5. **调用BusyBox命令**:在执行命令时,需要确保 BusyBox 的...

    某东茅台python秒杀脚本

    【某东茅台python秒杀脚本】是一种利用Python编程语言编写的自动化工具,主要用于在某电商平台(某东)上抢购茅台酒。这种脚本在2021年时是最新的,展示了当时Python爬虫技术在抢购领域的应用。本文将深入探讨这个...

Global site tag (gtag.js) - Google Analytics