Python與操作系統(tǒng)的十個高級交互指令
大家好!今天我們要聊的是Python與操作系統(tǒng)的高級交互。操作系統(tǒng)是計算機硬件和應用程序之間的橋梁,而Python提供的庫讓我們可以輕松地與操作系統(tǒng)進行交互。無論是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
創(chuàng)建新目錄
有時我們需要創(chuàng)建一個新的目錄來組織文件。下面是一個簡單的例子。
import os
# 創(chuàng)建新目錄
new_dir = 'new_folder'
os.mkdir(new_dir)
print(f"新目錄 {new_dir} 已創(chuàng)建")
輸出:
新目錄 new_folder 已創(chuàng)建
刪除目錄
當不再需要某個目錄時,我們可以將其刪除。
import os
# 刪除目錄
dir_to_remove = 'new_folder'
os.rmdir(dir_to_remove)
print(f"目錄 {dir_to_remove} 已刪除")
輸出:
目錄 new_folder 已刪除
運行外部命令
Python允許我們直接運行外部命令。這對于執(zhí)行一些特定的任務非常方便。
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
獲取系統(tǒng)信息
獲取系統(tǒng)信息可以幫助我們更好地了解運行環(huán)境。
import platform
# 獲取系統(tǒng)信息
info = platform.uname()
print(f"系統(tǒng)名稱: {info.system}")
print(f"節(jié)點名稱: {info.node}")
print(f"版本: {info.release}")
輸出:
系統(tǒng)名稱: Linux
節(jié)點名稱: mycomputer
版本: 5.4.0-77-generic
監(jiān)聽文件變化
有時候我們需要監(jiān)控文件或目錄的變化,例如自動備份等。
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()
這段代碼會監(jiān)聽當前目錄下所有文件的變化,并打印出修改的信息。
復制文件
復制文件是日常工作中常見的需求之一。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模塊可以實現(xiàn)。
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
文件權(quán)限管理
在某些情況下,我們需要對文件的權(quán)限進行管理,比如更改文件的所有者或者設置文件權(quán)限。
import os
# 文件路徑
file_path = 'folder1/moved_file1.txt'
# 更改文件權(quán)限
os.chmod(file_path, 0o777) # 設置文件權(quán)限為可讀、可寫、可執(zhí)行
print(f"文件 {file_path} 的權(quán)限已更改為 0777")
# 更改文件所有者
# 在Linux中,可以使用os.chown()方法更改文件所有者
# 但在Python中通常不推薦這樣做,因為需要root權(quán)限
# 如果確實需要,可以使用以下代碼:
# os.chown(file_path, uid, gid)
print(f"文件 {file_path} 的權(quán)限已更改為 0777")
輸出:
文件 folder1/moved_file1.txt 的權(quán)限已更改為 0777
文件 folder1/moved_file1.txt 的權(quán)限已更改為 0777
實戰(zhàn)案例:自動備份工具
假設你有一個重要的文件夾,需要定期進行備份。我們可以編寫一個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")
# 創(chuàng)建備份目錄
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模塊獲取當前的時間戳。
- 創(chuàng)建備份目錄:根據(jù)時間戳創(chuàng)建一個新的子目錄。
- 復制文件:遍歷源文件夾中的所有文件,并將它們復制到備份目錄中。
這個腳本可以在定時任務中運行,例如每天凌晨自動執(zhí)行一次,以確保數(shù)據(jù)的安全性。
以上就是關于Python與操作系統(tǒng)交互的十個高級指令。希望大家通過這些例子能夠更好地理解和應用Python的強大功能。如果你有任何問題或建議,請隨時留言討論!