Python操作Linux的全面指南

在计算机编程中,Python作为一种强大的编程语言,提供了丰富的库和函数来操作Linux系统。本文将介绍如何使用Python操作Linux,包括文件和目录管理、进程管理、网络配置等。

一、文件和目录管理

要列出当前目录下的所有文件和文件夹,可以使用Python内置的os模块中的listdir()函数。该函数返回一个列表,包含当前目录下的所有文件和文件夹的名称。以下是一个示例代码:

python 复制代码
import os

# 列出当前目录下的所有文件和文件夹
files = os.listdir()
print(files)

要创建一个新目录,可以使用Python内置的os模块中的mkdir()函数。该函数接受一个路径参数,表示要创建的目录的路径。如果指定的路径不存在,则创建一个新的目录;如果已经存在,则会抛出异常。以下是一个示例代码:

python 复制代码
import os

# 创建一个名为"example_folder"的新目录
folder_path = "example_folder"
if not os.path.exists(folder_path):
    os.mkdir(folder_path)

要删除一个目录及其所有内容,可以使用Python内置的shutil模块中的rmtree()函数。该函数接受一个路径参数,表示要删除的目录的路径。如果指定的路径不存在,则会抛出异常。以下是一个示例代码:

python 复制代码
import shutil

# 删除名为"example_folder"的目录及其所有内容
folder_path = "example_folder"
if os.path.exists(folder_path):
    shutil.rmtree(folder_path)

要重命名一个文件或文件夹,可以使用Python内置的os模块中的rename()函数。该函数接受两个参数,第一个参数是要重命名的文件或文件夹的旧路径,第二个参数是新路径。以下是一个示例代码:

python 复制代码
import os

# 将名为"old_file.txt"的文件重命名为"new_file.txt"
old_file_path = "old_file.txt"
new_file_path = "new_file.txt"
os.rename(old_file_path, new_file_path)

二、进程管理

要获取当前运行的所有进程信息,可以使用Python内置的psutil模块。该模块提供了一些常量和函数,用于获取进程ID、CPU使用率、内存使用情况等信息。以下是一个示例代码:

python 复制代码
import psutil

# 获取当前运行的所有进程信息
processes = psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_info'])
for process in processes:
    print(process.info)

要结束一个进程,可以使用Python内置的os模块中的kill()函数。该函数接受两个参数,第一个参数是要结束的进程的进程ID,第二个参数是信号类型。以下是一个示例代码:

python 复制代码
import os
import signal
import psutil

# 获取名为"example.py"的进程ID并结束该进程
process = psutil.Process(name="example.py")
os.kill(process.pid, signal.SIGTERM)

三、网络配置

要获取本机IP地址,可以使用Python内置的socket模块中的gethostbyname()函数。该函数接受一个主机名参数,返回主机名对应的IP地址。以下是一个示例代码:

python 复制代码
import socket

# 获取本机IP地址
ip_address = socket.gethostbyname(socket.gethostname())
print("IP Address:", ip_address)

四、网络配置

要配置Linux的网络接口,可以使用Python内置的os模块和subprocess模块。以下是一个示例代码:

python 复制代码
import os
import subprocess

# 列出所有网络接口
interfaces = os.listdir('/sys/class/net/')
print("Network Interfaces:", interfaces)

# 配置网络接口1为自动获取IP地址
interface = 'eth0'
subprocess.run(['sudo', 'ifconfig', interface, 'up'])
subprocess.run(['sudo', 'dhclient', interface])

# 配置网络接口2为静态IP地址
ip_address = '192.168.1.100'
netmask = '255.255.255.0'
gateway = '192.168.1.1'
subprocess.run(['sudo', 'ifconfig', interface, ip_address, netmask, 'up'])
subprocess.run(['sudo', 'route', 'add', 'default', 'gw', gateway, interface])

以上代码首先列出了所有的网络接口,然后分别配置了两个接口为自动获取IP地址和静态IP地址。在配置静态IP地址时,需要指定IP地址、子网掩码和默认网关。注意,这些操作需要管理员权限,因此在命令前使用了sudo

五、Python操作Linux的高级技巧

  1. 使用os.system()执行系统命令
  2. 使用os.walk()遍历目录
  3. 使用os.path.join()拼接路径
  4. 使用os.path.exists()检查文件或目录是否存在
  5. 使用os.path.isfile()os.path.isdir()判断是文件还是目录
  6. 使用os.path.getsize()获取文件大小
  7. 使用os.path.getmtime()os.path.getctime()获取文件的修改时间和创建时间
  8. 使用os.chmod()修改文件权限
  9. 使用os.chown()修改文件所有者和所属组
  10. 使用os.rename()重命名文件或目录
  11. 使用os.remove()删除文件
  12. 使用os.rmdir()删除空目录
  13. 使用os.makedirs()递归创建多级目录
  14. 使用os.listdir()列出目录下的文件和子目录
  15. 使用os.environ获取和设置环境变量
  16. 使用os.pipe()创建管道进行进程间通信
  17. 使用os.fork()创建子进程
  18. 使用os.exec*()系列函数替换当前进程映像
  19. 使用os.waitpid()等待子进程结束并获取其返回值
  20. 使用os.setuid()os.setgid()切换用户和组
  21. 使用os.umask()设置文件创建掩码
  22. 使用os.symlink()创建符号链接
  23. 使用os.readlink()读取符号链接指向的路径
  24. 使用os.ttyname()获取终端设备名称
  25. 使用os.dup()os.dup2()复制文件描述符
  26. 使用os.fcntl()对文件进行低级操作,如锁定、解锁等
  27. 使用os.statvfs()获取文件系统信息
  28. 使用os.sysconf()获取系统配置参数
  29. 使用os.tempnam()os.tmpnam()生成临时文件名
  30. 使用os.tmpfile()创建一个临时文件对象
  31. 使用os.getenv()os.putenv()获取和设置环境变量
  32. 使用os.getlogin()获取当前登录用户名
  33. 使用os.getpid()获取当前进程ID
  34. 使用os.getppid()获取父进程ID
  35. 使用os.getuid()os.getgid()获取当前用户和组ID
  36. 使用os.geteuid()os.getegid()获取有效用户和组ID
  37. 使用os.getgroups()获取当前用户所属的所有组ID
  38. 使用os.getgrent()os.endgrent()遍历组信息
  39. 使用os.getpwent()os.endpwent()遍历用户信息
  40. 使用os.getpass()安全地获取用户输入的密码
  41. 使用os.getcwd()os.chdir()获取和更改当前工作目录
  42. 使用os.scandir()遍历目录(Python 3.5+)
  43. 使用os.pathconf()获取文件系统配置参数
  44. 使用os.access()检查文件或目录的访问权限
  45. 使用os.Xattr操作扩展属性
  46. 使用os.pathconf_names获取所有可用的文件系统配置参数名称
  47. 使用os.pathconf_values()获取指定配置参数的值
  48. 使用os.pathconf_max()获取指定配置参数的最大值
  49. 使用os.pathconf_min()获取指定配置参数的最小值
  50. 使用os.pathconf_flags()获取指定配置参数的标志位

六、Python操作Linux的高级库与模块

  1. psutil:跨平台库,用于获取系统进程和系统利用率(CPU、内存、磁盘、网络等)信息。
  2. paramiko:用于实现SSHv2协议,实现远程服务器的连接、执行命令、传输文件等功能。
  3. requests:用于发送HTTP请求,支持多种请求方法(GET、POST、PUT、DELETE等)。
  4. ftplib:用于实现FTP协议,实现文件的上传、下载、删除等操作。
  5. xmlrpc:用于实现XML-RPC协议,实现远程过程调用。
  6. httplib2:用于实现HTTP/1.1协议,实现HTTP客户端的功能。
  7. sqlite3:用于操作SQLite数据库。
  8. zlib:用于压缩和解压缩数据。
  9. bz2:用于压缩和解压缩数据。
  10. gzip:用于压缩和解压缩数据。
  11. mmap:用于将文件映射到内存中,实现大文件的高效处理。
  12. readline:用于实现命令行的历史记录功能。
  13. rlcompleter:用于实现命令行的自动补全功能。
  14. atexit:用于注册程序退出时的回调函数。
  15. signal:用于处理操作系统信号。
  16. threading:用于实现多线程编程。
  17. multiprocessing:用于实现多进程编程。
  18. queue:用于实现进程间的数据交换。
  19. collections:提供了一系列有用的容器类,如列表、元组、字典等。
  20. itertools:提供了一系列高效的迭代器函数,如排列组合、循环迭代等。
  21. functools:提供了一系列高阶函数,如装饰器、偏函数等。
  22. operator:提供了一系列对应于内置类型的运算符函数。
  23. builtins:提供了一些内置函数和异常类。
  24. math:提供了一系列数学函数和常量。
  25. cmath:提供了一系列复数数学函数。
  26. random:提供了一系列随机数生成函数。
  27. string:提供了一系列字符串处理函数。
  28. datetime:提供了一系列日期和时间处理函数。
  29. timeit:用于测量代码执行时间。
  30. traceback:用于打印异常堆栈信息。
  31. warnings:用于发出警告信息。
  32. weakref:用于创建弱引用对象。
  33. gc:用于控制垃圾回收机制。
  34. marshal:用于序列化和反序列化Python对象。
  35. array:用于创建和操作数组对象。
  36. bisect:用于在有序列表中查找插入位置。
  37. ctypes:用于调用C语言动态库中的函数。
  38. cPickle:用于序列化和反序列化Python对象,兼容旧版本的pickle模块。
  39. sqlite3:用于操作SQLite数据库。
  40. zlib:用于压缩和解压缩数据。
  41. bz2:用于压缩和解压缩数据。
  42. gzip:用于压缩和解压缩数据。
  43. mmap:用于将文件映射到内存中,实现大文件的高效处理。
  44. readline:用于实现命令行的历史记录功能。
  45. rlcompleter:用于实现命令行的自动补全功能。
  46. atexit:用于注册程序退出时的回调函数。
  47. signal:用于处理操作系统信号。
  48. threading:用于实现多线程编程。
  49. multiprocessing:用于实现多进程编程。
  50. queue:用于实现进程间的数据交换。
相关推荐
杜子不疼.2 分钟前
浏览器秒连服务器!WebSSH 实战体验,远程运维再也不折腾
运维·服务器·人工智能
她说彩礼65万3 分钟前
C语言 整形提升及算数转换
linux·服务器·c语言
loockluo3 分钟前
NFS网络存储部署与性能优化实战:家用服务器的学习与实践
服务器·网络·性能优化
RenPenry4 分钟前
2026 在Linux上搭建CS2插件服务器
linux·运维·服务器·cs2·debian13
流年笙歌_5 分钟前
(超详细)手把手教你安装银河麒麟高级服务器操作系统 V11
运维·服务器
爱学习的小囧6 分钟前
VCF 私有 AI 服务(PAIS)自签名 TLS 证书配置避坑指南
服务器·esxi·虚拟化·vcf
微学AI6 分钟前
code-server 体验:一行命令把 VS Code 跑在服务器上,随时用浏览器写代码
运维·服务器
嫂子开门我是_我哥7 分钟前
一文讲透服务器:普通人也能看懂的服务器科普,网站为啥离不开它?
运维·服务器
qq_232888757 分钟前
麒麟V10服务器安装搜狗输入法
运维·服务器
程序员晓晓9 分钟前
【网络安全零基础入门】应急响应之服务器入侵排查,小白零基础入门到精通教程
服务器·web安全·计算机·网络安全·渗透测试·黑客技术·网安应急响应