Python 与操作系统的十个高级交互指令

开发 后端 系统
操作系统是计算机硬件和应用程序之间的桥梁,而Python提供的库让我们可以轻松地与操作系统进行交互。今天我们要聊的是Python与操作系统的高级交互。

大家好!今天我们要聊的是Python与操作系统的高级交互。操作系统是计算机硬件和应用程序之间的桥梁,而Python提供的库让我们可以轻松地与操作系统进行交互。无论是Windows还是Linux,Python都能帮助我们完成很多任务。

查看当前工作目录

首先,我们来看看如何查看当前的工作目录。这在处理文件路径时非常有用。

import os

# 获取当前工作目录
current_directory = os.getcwd()
print("当前工作目录:", current_directory)

输出:

当前工作目录: /path/to/your/current/directory

列出目录下的所有文件

接下来,我们学习如何列出目录下的所有文件。这对于自动化脚本来说非常重要。

import os

# 列出当前目录下的所有文件
files = os.listdir('.')
for file in files:
    print(file)

输出:

file1.txt
file2.jpg
folder1

创建新目录

有时我们需要创建一个新的目录来组织文件。下面是一个简单的例子。

import os

# 创建新目录
new_dir = 'new_folder'
os.mkdir(new_dir)
print(f"新目录 {new_dir} 已创建")

输出:

新目录 new_folder 已创建

删除目录

当不再需要某个目录时,我们可以将其删除。

import os

# 删除目录
dir_to_remove = 'new_folder'
os.rmdir(dir_to_remove)
print(f"目录 {dir_to_remove} 已删除")

输出:

目录 new_folder 已删除

运行外部命令

Python允许我们直接运行外部命令。这对于执行一些特定的任务非常方便。

import subprocess

# 运行外部命令
command = "ls -l"
result = subprocess.run(command, shell=True, text=True, capture_output=True)
print(result.stdout)

输出:

total 0
drwxr-xr-x 2 user user 4096 Mar  1 14:00 folder1
-rw-r--r-- 1 user user    0 Mar  1 14:00 file1.txt

获取系统信息

获取系统信息可以帮助我们更好地了解运行环境。

import platform

# 获取系统信息
info = platform.uname()
print(f"系统名称: {info.system}")
print(f"节点名称: {info.node}")
print(f"版本: {info.release}")

输出:

系统名称: Linux
节点名称: mycomputer
版本: 5.4.0-77-generic

监听文件变化

有时候我们需要监控文件或目录的变化,例如自动备份等。

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print(f"{event.src_path} 已修改")

if __name__ == "__main__":
    path = "."
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    try:
        while True:
            pass
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

这段代码会监听当前目录下所有文件的变化,并打印出修改的信息。

复制文件

复制文件是日常工作中常见的需求之一。Python中的shutil模块提供了复制文件的功能。

import shutil

# 源文件和目标文件
source_file = 'file1.txt'
destination_file = 'copy_of_file1.txt'

# 复制文件
shutil.copy(source_file, destination_file)
print(f"文件 {source_file} 已复制为 {destination_file}")

输出:

文件 file1.txt 已复制为 copy_of_file1.txt

移动文件

除了复制文件外,移动文件也是常见的需求。同样使用shutil模块可以实现。

import shutil

# 源文件和目标文件
source_file = 'copy_of_file1.txt'
destination_file = 'folder1/moved_file1.txt'

# 移动文件
shutil.move(source_file, destination_file)
print(f"文件 {source_file} 已移动到 {destination_file}")

输出:

文件 copy_of_file1.txt 已移动到 folder1/moved_file1.txt

文件权限管理

在某些情况下,我们需要对文件的权限进行管理,比如更改文件的所有者或者设置文件权限。

import os

# 文件路径
file_path = 'folder1/moved_file1.txt'

# 更改文件权限
os.chmod(file_path, 0o777)  # 设置文件权限为可读、可写、可执行
print(f"文件 {file_path} 的权限已更改为 0777")

# 更改文件所有者
# 在Linux中,可以使用os.chown()方法更改文件所有者
# 但在Python中通常不推荐这样做,因为需要root权限
# 如果确实需要,可以使用以下代码:
# os.chown(file_path, uid, gid)

print(f"文件 {file_path} 的权限已更改为 0777")

输出:

文件 folder1/moved_file1.txt 的权限已更改为 0777
文件 folder1/moved_file1.txt 的权限已更改为 0777

实战案例:自动备份工具

假设你有一个重要的文件夹,需要定期进行备份。我们可以编写一个Python脚本来自动完成这个任务。下面是一个简单的例子:

import os
import shutil
import datetime

def backup_files(source_folder, backup_folder):
    # 获取当前日期和时间
    now = datetime.datetime.now()
    timestamp = now.strftime("%Y%m%d_%H%M%S")
    
    # 创建备份目录
    backup_subfolder = os.path.join(backup_folder, timestamp)
    os.makedirs(backup_subfolder, exist_ok=True)
    
    # 复制文件
    for root, dirs, files in os.walk(source_folder):
        for file in files:
            source_file = os.path.join(root, file)
            relative_path = os.path.relpath(source_file, source_folder)
            destination_file = os.path.join(backup_subfolder, relative_path)
            os.makedirs(os.path.dirname(destination_file), exist_ok=True)
            shutil.copy2(source_file, destination_file)
    
    print(f"备份完成:{source_folder} -> {backup_subfolder}")

if __name__ == "__main__":
    source_folder = '/path/to/source/folder'
    backup_folder = '/path/to/backup/folder'
    backup_files(source_folder, backup_folder)

分析:

  • 获取当前日期和时间:使用datetime模块获取当前的时间戳。
  • 创建备份目录:根据时间戳创建一个新的子目录。
  • 复制文件:遍历源文件夹中的所有文件,并将它们复制到备份目录中。

这个脚本可以在定时任务中运行,例如每天凌晨自动执行一次,以确保数据的安全性。

责任编辑:赵宁宁 来源: 手把手PythonAI编程
相关推荐

2024-09-30 11:38:30

Python操作系统

2024-08-19 10:00:00

Python操作系统开发

2024-06-03 09:00:00

Python代码

2023-01-11 12:06:15

2024-05-28 08:00:00

Python操作系统命令

2022-08-29 14:56:56

Python脚本代码

2022-04-20 07:42:08

Python脚本代码

2023-07-02 14:21:06

PythonMatplotlib数据可视化库

2022-11-07 16:06:15

TypeScript开发技巧

2023-12-22 15:32:20

2021-03-11 09:02:37

SQL数据库数据

2024-09-04 15:54:43

Python列表索引

2010-05-06 15:35:14

Unix操作系统

2024-09-03 09:44:03

2024-07-18 15:08:27

2022-03-22 23:18:55

SQL技术内部概念

2024-06-11 08:52:58

2024-05-17 16:18:27

2021-12-02 14:55:44

Python项目编程语言

2023-06-27 15:50:23

Python图像处理
点赞
收藏

51CTO技术栈公众号