文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-11-29 18:43

关注

查看当前工作目录

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

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)

分析:

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

以上就是关于Python与操作系统交互的十个高级指令。希望大家通过这些例子能够更好地理解和应用Python的强大功能。如果你有任何问题或建议,请随时留言讨论!

来源:手把手PythonAI编程内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯