PYTHON基础技能 – 15个Python进阶操作系统交互高级命令

释放双眼,带上耳机,听听看~!

今天我们要来探索那些让程序与操作系统无缝对接的高级命令!让我们一起把Python变成操作系统的隐形指挥官吧!

1. 系统调用:os模块的魔法杖

想象一下,用一行Python代码就能执行系统命令,是不是很酷?来看

1
os.system()

的小把戏。


1
import&nbsp;os<br>os.system("echo&nbsp;'Hello,&nbsp;OS!'");

这段代码就像是对操作系统说:“嘿,朋友,帮我打印这句话。” 输出:“Hello, OS!” 但记得,它会打开一个新的shell进程,所以要谨慎使用哦!

2. 目录间的舞蹈:os.path

文件路径就像家的地址,

1
os.path

能帮你轻松管理它们。


1
current_dir&nbsp;=&nbsp;os.getcwd()&nbsp;&nbsp;<em>#&nbsp;像不像问:“我现在在哪?”</em><br>print(current_dir)<br>new_folder&nbsp;=&nbsp;"my_new_folder"<br>os.makedirs(new_folder)&nbsp;&nbsp;<em>#&nbsp;“我要在这里建个新家!”</em>

3. 文件的搬运工:shutil

搬家不求人,

1
shutil

来帮忙。移动文件?小事一桩。


1
import&nbsp;shutil<br>file_to_move&nbsp;=&nbsp;"old_file.txt"<br>new_location&nbsp;=&nbsp;"my_new_folder/"&nbsp;+&nbsp;file_to_move<br>shutil.move(file_to_move,&nbsp;new_location)&nbsp;&nbsp;<em>#&nbsp;文件搬家,就这么简单。</em>

4. 文件的读写艺术家:open()

Python的内置函数

1
open()

,是打开文件的钥匙,读写文件的魔法书。


1
with&nbsp;open("my_file.txt",&nbsp;"w")&nbsp;as&nbsp;file:<br>&nbsp;&nbsp;&nbsp;&nbsp;file.write("这是我的第一条信息。\n你好,世界!")<br>&nbsp;&nbsp;&nbsp;&nbsp;<br><em>#&nbsp;阅读时间:</em><br>with&nbsp;open("my_file.txt",&nbsp;"r")&nbsp;as&nbsp;file:<br>&nbsp;&nbsp;&nbsp;&nbsp;content&nbsp;=&nbsp;file.read()<br>&nbsp;&nbsp;&nbsp;&nbsp;print(content)

写入后读取,就像在和文件对话一样!

5. 批处理文件名:glob

想要批量处理文件?

1
glob

让你一网打尽。


1
import&nbsp;glob<br>for&nbsp;file&nbsp;in&nbsp;glob.glob("*.txt"):&nbsp;&nbsp;<em>#&nbsp;找到所有.txt文件</em><br>&nbsp;&nbsp;&nbsp;&nbsp;print(file)&nbsp;&nbsp;<em>#&nbsp;每个文件名,一个接一个。</em>

这招对批量处理图片、文档超实用!

6. 进程的交响乐:multiprocessing

单线程太孤单?

1
multiprocessing

让你的程序并行运行,效率飞起来!


1
from&nbsp;multiprocessing&nbsp;import&nbsp;Process<br><br>def&nbsp;worker(num):<br>&nbsp;&nbsp;&nbsp;&nbsp;"""小小工人"""<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f'Worker&nbsp;{num}&nbsp;is&nbsp;working.')<br><br>if&nbsp;__name__&nbsp;==&nbsp;"__main__":<br>&nbsp;&nbsp;&nbsp;&nbsp;processes&nbsp;=&nbsp;&#091;]<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;in&nbsp;range(3):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;Process(target=worker,&nbsp;args=(i,))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processes.append(p)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.start()

每个

1
Process

就是一个小工人,同时工作,效率杠杠的!

7. 定时任务:schedule

想要程序定时执行任务?

1
schedule

模块来帮忙。


1
import&nbsp;schedule<br>import&nbsp;time<br><br>def&nbsp;job():<br>&nbsp;&nbsp;&nbsp;&nbsp;print("I'm&nbsp;doing&nbsp;a&nbsp;job&nbsp;at&nbsp;scheduled&nbsp;time.")<br><br>schedule.every(1).seconds.do(job)<br><br>while&nbsp;True:<br>&nbsp;&nbsp;&nbsp;&nbsp;schedule.run_pending()<br>&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(1)

就像设置闹钟,让Python自动执行任务。

8. 环境变量的探秘:os.environ

环境变量藏着很多秘密,

1
os.environ

帮你揭开面纱。


1
print(os.environ.get('PATH'))&nbsp;&nbsp;<em>#&nbsp;看看PATH变量,了解系统搜索可执行文件的路径。</em>

想知道系统的小秘密?就这么简单。

9. 文件压缩与解压:zipfile/tarfile

压缩文件,节省空间,

1
zipfile

1
tartfile

是好帮手。


1
import&nbsp;zipfile<br><br>with&nbsp;zipfile.ZipFile("my_archive.zip",&nbsp;'w')&nbsp;as&nbsp;zipf:<br>&nbsp;&nbsp;&nbsp;&nbsp;zipf.write("my_file.txt")&nbsp;&nbsp;<em>#&nbsp;压缩文件</em><br>&nbsp;&nbsp;&nbsp;&nbsp;zipf.printdir()&nbsp;&nbsp;<em>#&nbsp;查看压缩包内容</em><br><br>with&nbsp;zipfile.ZipFile("my_archive.zip",&nbsp;'r')&nbsp;as&nbsp;zipf:<br>&nbsp;&nbsp;&nbsp;&nbsp;zipf.extractall("extracted_files")&nbsp;&nbsp;<em>#&nbsp;解压文件到指定目录</em>

压缩解压,轻松搞定!

10. 优雅的错误处理:try…except

在操作系统的丛林里,错误难免,优雅处理是关键。


1
try:<br>&nbsp;&nbsp;&nbsp;&nbsp;<em>#&nbsp;尝试执行的危险动作</em><br>&nbsp;&nbsp;&nbsp;&nbsp;os.remove("nonexistent_file.txt")<br>except&nbsp;FileNotFoundError:<br>&nbsp;&nbsp;&nbsp;&nbsp;print("文件不存在,别担心,我不会哭。")

遇到错误不慌张,从容应对,程序更健壮。

11. 文件的高级遍历:os.scandir()

1
os.listdir()

更强大的目录扫描工具。


1
with&nbsp;os.scandir(".")&nbsp;as&nbsp;entries:<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;entry&nbsp;in&nbsp;entries:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;entry.is_file():<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(entry.name)

不仅列出文件名,还能获取更多信息,如是否是文件或目录。

12. 符号链接的创建:os.symlink()

想玩链接游戏?

1
os.symlink()

让你的文件像快捷方式一样存在。


1
os.symlink("source_file.txt",&nbsp;"symbolic_link.txt")&nbsp;&nbsp;<em>#&nbsp;创建符号链接</em>

一个链接,两处访问,神奇不?

13. 文件权限的探索:os.access()

安全第一,检查文件权限再操作。


1
if&nbsp;os.access("a_file.txt",&nbsp;os.R_OK):&nbsp;&nbsp;<em>#&nbsp;检查读权限</em><br>&nbsp;&nbsp;&nbsp;&nbsp;print("我可以读这个文件。")

确保操作前有权限,避免尴尬。

14. 管道与重定向:subprocess

高级玩家必备,

1
subprocess

模块让你直接控制命令行输入输出。


1
import&nbsp;subprocess<br>output&nbsp;=&nbsp;subprocess.check_output(&#091;"ls",&nbsp;"-l"])&nbsp;&nbsp;<em>#&nbsp;类似于os.system,但更强大</em><br>print(output.decode())&nbsp;&nbsp;<em>#&nbsp;解码输出,显示文件列表</em>

管道和重定向,都在这里实现,强大无比。

15. 终端的色彩魔术:termcolor

给终端加点颜色,让输出更生动。


1
from&nbsp;termcolor&nbsp;import&nbsp;colored<br><br>print(colored("Python编程,彩色生活!",&nbsp;"cyan",&nbsp;attrs=&#091;"bold"]))

单调的黑白,瞬间变得活泼起来!


高级概念与应用

16. 进程间通信(IPC):Pipe与Queue

在多进程编程中,进程间的通信至关重要。Python提供了

1
multiprocessing.Pipe

1
multiprocessing.Queue

来帮助进程共享数据。

Pipe


1
from&nbsp;multiprocessing&nbsp;import&nbsp;Process,&nbsp;Pipe<br><br>def&nbsp;sender(conn):<br>&nbsp;&nbsp;&nbsp;&nbsp;conn.send(&#091;'hello',&nbsp;'world'])&nbsp;&nbsp;<em>#&nbsp;发送消息</em><br>&nbsp;&nbsp;&nbsp;&nbsp;conn.close()<br><br>def&nbsp;receiver(conn):<br>&nbsp;&nbsp;&nbsp;&nbsp;print(conn.recv())&nbsp;&nbsp;<em>#&nbsp;接收消息</em><br>&nbsp;&nbsp;&nbsp;&nbsp;conn.close()<br><br>parent_conn,&nbsp;child_conn&nbsp;=&nbsp;Pipe()<br>p1&nbsp;=&nbsp;Process(target=sender,&nbsp;args=(child_conn,))<br>p2&nbsp;=&nbsp;Process(target=receiver,&nbsp;args=(parent_conn,))<br>p1.start()<br>p2.start()<br>p1.join()<br>p2.join()

Queue

队列是另一种更安全的进程间通信方式,支持多个生产者和消费者模型。


1
from&nbsp;multiprocessing&nbsp;import&nbsp;Process,&nbsp;Queue<br><br>def&nbsp;writer(q):<br>&nbsp;&nbsp;&nbsp;&nbsp;q.put('消息来了!')<br><br>def&nbsp;reader(q):<br>&nbsp;&nbsp;&nbsp;&nbsp;print(q.get())&nbsp;&nbsp;<em>#&nbsp;阻塞直到有消息</em><br><br>q&nbsp;=&nbsp;Queue()<br>p1&nbsp;=&nbsp;Process(target=writer,&nbsp;args=(q,))<br>p2&nbsp;=&nbsp;Process(target=reader,&nbsp;args=(q,))<br>p1.start()<br>p2.start()<br>p1.join()<br>p2.join()

17. 守护进程:后台运行的勇士

在多进程应用中,有时需要一些进程在主进程结束后继续运行,这就是守护进程的作用。


1
from&nbsp;multiprocessing&nbsp;import&nbsp;Process<br><br>class&nbsp;BackgroundTask(Process):<br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;run(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;True:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("我在后台默默工作...")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(2)<br><br>background&nbsp;=&nbsp;BackgroundTask(daemon=True)&nbsp;&nbsp;<em>#&nbsp;设置为守护进程</em><br>background.start()

18. 信号处理:响应操作系统信号

Python可以处理操作系统发送的信号,比如Ctrl+C中断信号。


1
import&nbsp;signal<br>import&nbsp;os<br><br>def&nbsp;signal_handler(sig,&nbsp;frame):<br>&nbsp;&nbsp;&nbsp;&nbsp;print('捕获到信号:',&nbsp;sig)<br>&nbsp;&nbsp;&nbsp;&nbsp;exit(0)<br><br>signal.signal(signal.SIGINT,&nbsp;signal_handler)&nbsp;&nbsp;<em>#&nbsp;注册信号处理器</em><br>print('PID:',&nbsp;os.getpid())<br>input('等待中断...')

19. 上下文管理器:with语句的魔力

Python的上下文管理协议通过

1
with

语句,可以自动管理资源,比如自动关闭文件。


1
with&nbsp;open('test.txt',&nbsp;'w')&nbsp;as&nbsp;f:<br>&nbsp;&nbsp;&nbsp;&nbsp;f.write('Hello,&nbsp;context&nbsp;manager!')<br><em>#&nbsp;文件在这里自动关闭,无需f.close()</em>

20. 异步编程:asyncio

最后,我们不能不提异步编程,它是现代Python处理I/O密集型任务的利器。


1
import&nbsp;asyncio<br><br>async&nbsp;def&nbsp;hello(i):<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f'Hello,&nbsp;world&nbsp;{i}')<br>&nbsp;&nbsp;&nbsp;&nbsp;await&nbsp;asyncio.sleep(1)&nbsp;&nbsp;<em>#&nbsp;异步等待</em><br><br>tasks&nbsp;=&nbsp;&#091;hello(i)&nbsp;for&nbsp;i&nbsp;in&nbsp;range(3)]<br>loop&nbsp;=&nbsp;asyncio.get_event_loop()<br>loop.run_until_complete(asyncio.wait(tasks))<br>loop.close()

通过这些深入探讨,你的Python编程技能应该已经更加全面,不仅限于基础的操作系统交互,还涵盖了高级的并发与异步编程。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

安全运维之道:发现、解决问题的有效闭环

2024-4-14 20:59:36

安全运维

稳定性建设 – 架构优化的关键策略

2025-2-11 17:15:56

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索