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:用于实现进程间的数据交换。
相关推荐
秦jh_2 分钟前
【Linux】多线程(概念,控制)
linux·运维·前端
秀儿还能再秀1 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
扣得君1 小时前
C++20 Coroutine Echo Server
运维·服务器·c++20
keep__go1 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell
矛取矛求1 小时前
Linux中给普通账户一次性提权
linux·运维·服务器
Fanstay9851 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker
大熊程序猿2 小时前
ubuntu 安装kafka-eagle
linux·ubuntu·kafka
阿_旭2 小时前
如何使用OpenCV和Python进行相机校准
python·opencv·相机校准·畸变校准
jieshenai2 小时前
使用VSCode远程连接服务器并解决Neo4j无法登陆问题
服务器·vscode·neo4j
幸运的星竹2 小时前
使用pytest+openpyxl做接口自动化遇到的问题
python·自动化·pytest