Python中的os模塊(Operating System模塊)提供了與操作系統(tǒng)交互的函數(shù)。以下是一些os模塊中常用的方法:
一、文件和目錄操作:
-
os.getcwd()
: 獲取當(dāng)前工作目錄。
import os
# 獲取當(dāng)前工作目錄
current_directory = os.getcwd()
# 打印結(jié)果
print("當(dāng)前工作目錄:", current_directory)
-
os.chdir(path)
: 改變當(dāng)前工作目錄。
import os
# 獲取當(dāng)前工作目錄
current_directory_before = os.getcwd()
# 打印當(dāng)前工作目錄
print("當(dāng)前工作目錄(更改前):", current_directory_before)
# 指定新的路徑
new_directory = "/path/to/your/directory"
# 改變當(dāng)前工作目錄到新路徑
os.chdir(new_directory)
# 獲取改變后的當(dāng)前工作目錄
current_directory_after = os.getcwd()
# 打印改變后的當(dāng)前工作目錄
print("當(dāng)前工作目錄(更改后):", current_directory_after)
-
os.listdir(path='.')
: 返回指定目錄下的所有文件和目錄列表。
import os
# 指定要列出文件的目錄
directory_path = "/path/to/your/directory"
# 獲取目錄下的文件和文件夾列表
contents = os.listdir(directory_path)
# 打印結(jié)果
print(f"目錄 '{directory_path}' 下的內(nèi)容:")
for item in contents:
print(item)
-
os.mkdir(path)
: 創(chuàng)建目錄。
注意,該方法創(chuàng)建單層目錄 。如果上級目錄不存在,會引發(fā) 'FileNotFoundError'。
import os
# 指定要創(chuàng)建的目錄的路徑
new_directory_path = "/path/to/your/new_directory"
# 創(chuàng)建新目錄
os.mkdir(new_directory_path)
print(f"目錄 '{new_directory_path}' 已創(chuàng)建成功。")
-
os.makedirs(path)
: 遞歸創(chuàng)建多層目錄。
注意,遞歸創(chuàng)建多層目錄。如果上級目錄不存在,會自動創(chuàng)建上級目錄。
import os
# 指定要創(chuàng)建的目錄的路徑(包括多層目錄)
new_directory_path = "/path/to/your/new_directory/multiple/levels"
try:
# 創(chuàng)建多層目錄
os.makedirs(new_directory_path)
print(f"目錄 '{new_directory_path}' 及其上級目錄已創(chuàng)建成功。")
except Exception as e:
print(f"創(chuàng)建目錄時發(fā)生錯誤: {e}")
-
os.remove(path)
: 刪除文件。
import os
# 指定要刪除的文件路徑
file_path = "/path/to/your/file.txt"
try:
# 刪除文件
os.remove(file_path)
print(f"文件 '{file_path}' 已成功刪除。")
except FileNotFoundError:
print(f"無法刪除文件 '{file_path}',因?yàn)槲募淮嬖凇?)
except Exception as e:
print(f"刪除文件時發(fā)生錯誤: {e}")
-
os.rmdir(path)
: 刪除目錄(只能刪除空目錄)。
注意,os.rmdir(path) 用于刪除指定路徑上的空目錄。如果目錄不為空,os.rmdir() 會引發(fā) OSError。
import os
# 指定要刪除的目錄路徑
directory_path = "/path/to/your/empty_directory"
try:
# 刪除空目錄
os.rmdir(directory_path)
print(f"目錄 '{directory_path}' 已成功刪除。")
except FileNotFoundError:
print(f"無法刪除目錄 '{directory_path}',因?yàn)槟夸洸淮嬖凇?)
except OSError as e:
print(f"刪除目錄時發(fā)生錯誤: {e}")
-
os.removedirs(path)
: 遞歸刪除目錄樹。
注意,os.removedirs(path) 函數(shù)用于遞歸地刪除目錄樹。與 os.rmdir() 不同,os.removedirs() 會刪除指定路徑上的目錄及其上級目錄,只要它們都是空的。如果目錄中有非空的子目錄或文件,刪除將失敗。如果需要刪除非空目錄樹,可以考慮使用 shutil.rmtree()。
import os
# 指定要刪除的目錄路徑
directory_path = "/path/to/your/directory_tree"
try:
# 遞歸刪除目錄樹
os.removedirs(directory_path)
print(f"目錄樹 '{directory_path}' 及其上級目錄已成功刪除。")
except FileNotFoundError:
print(f"無法刪除目錄樹 '{directory_path}',因?yàn)槁窂讲淮嬖凇?)
except OSError as e:
print(f"刪除目錄樹時發(fā)生錯誤: {e}")
二、路徑操作:
-
os.path.join(path, *paths)
: 將多個路徑組合成一個路徑。
import os
# 指定路徑的各個部分
base_path = "/path/to/your/base"
subfolder = "subfolder"
file_name = "example.txt"
# 使用 os.path.join() 連接路徑
full_path = os.path.join(base_path, subfolder, file_name)
# 打印連接后的路徑
print(f"連接后的路徑: {full_path}")
-
os.path.abspath(path)
: 返回絕對路徑。
import os
# 指定相對路徑
relative_path = "subfolder/example.txt"
# 使用 os.path.abspath() 獲取絕對路徑
absolute_path = os.path.abspath(relative_path)
# 打印結(jié)果
print(f"相對路徑: {relative_path}")
print(f"絕對路徑: {absolute_path}")
-
os.path.exists(path)
: 判斷路徑是否存在。
import os
# 指定要檢查的路徑
path_to_check = "/path/to/your/file.txt"
# 使用 os.path.exists() 檢查路徑是否存在
if os.path.exists(path_to_check):
print(f"路徑 '{path_to_check}' 存在。")
else:
print(f"路徑 '{path_to_check}' 不存在。")
-
os.path.isfile(path)
: 判斷是否為文件。
import os
# 指定要檢查的路徑
file_path = "/path/to/your/file.txt"
# 使用 os.path.isfile() 檢查路徑是否為文件
if os.path.isfile(file_path):
print(f"路徑 '{file_path}' 是一個文件。")
else:
print(f"路徑 '{file_path}' 不是一個文件,可能是目錄或不存在。")
-
os.path.isdir(path)
: 判斷是否為目錄。
import os
# 指定要檢查的路徑
directory_path = "/path/to/your/directory"
# 使用 os.path.isdir() 檢查路徑是否為目錄
if os.path.isdir(directory_path):
print(f"路徑 '{directory_path}' 是一個目錄。")
else:
print(f"路徑 '{directory_path}' 不是一個目錄,可能是文件或不存在。")
三、系統(tǒng)環(huán)境變量:
-
os.environ
: 包含系統(tǒng)環(huán)境變量的字典。
import os
# 獲取所有環(huán)境變量
all_env_variables = os.environ
# 打印所有環(huán)境變量
print("所有環(huán)境變量:")
for key, value in all_env_variables.items():
print(f"{key}: {value}")
# 獲取特定環(huán)境變量的值
home_directory = os.environ.get('HOME', '未設(shè)置') # 如果不存在,返回默認(rèn)值 '未設(shè)置'
# 打印特定環(huán)境變量的值
print(f"HOME 環(huán)境變量的值: {home_directory}")
-
os.getenv(key, default=None)
: 獲取環(huán)境變量的值。
import os
# 獲取 HOME 環(huán)境變量的值
home_directory = os.getenv('HOME', '未設(shè)置') # 如果不存在,返回默認(rèn)值 '未設(shè)置'
# 打印 HOME 環(huán)境變量的值
print(f"HOME 環(huán)境變量的值: {home_directory}")
# 獲取不存在的環(huán)境變量的值,并指定默認(rèn)值
nonexistent_variable = os.getenv('NONEXISTENT_VARIABLE', '默認(rèn)值')
# 打印不存在的環(huán)境變量的值
print(f"NONEXISTENT_VARIABLE 環(huán)境變量的值: {nonexistent_variable}")
四、執(zhí)行系統(tǒng)命令:
-
os.system(command)
: 在子shell中執(zhí)行系統(tǒng)命令。
注意,1、示例中,os.system('pwd') 在類 Unix 系統(tǒng)上執(zhí)行命令來打印當(dāng)前工作目錄,而在 Windows 上可能需要使用 os.system('cd') 或 os.system('echo %cd%')。執(zhí)行命令后,os.system() 返回命令的退出狀態(tài)碼,并通過 print 打印出來。
??????? 2、os.system() 存在一些安全性和平臺差異的問題,可以使用 subprocess 模塊來執(zhí)行命令,它提供了更多的控制和安全性。例如,subprocess.run() 是一個替代方案。
import os
# 執(zhí)行一個簡單的命令,例如打印當(dāng)前工作目錄
command = 'pwd' # 在 Windows 上可能是 'cd' 或 'echo %cd%'
# 使用 os.system() 執(zhí)行命令
exit_status = os.system(command)
# 打印命令的退出狀態(tài)碼
print(f"命令 '{command}' 的退出狀態(tài)碼: {exit_status}")
-
os.popen(command)
: 打開一個管道,執(zhí)行系統(tǒng)命令。
注意,1、示例中,os.popen('ls') 在類 Unix 系統(tǒng)上執(zhí)行命令來列出當(dāng)前目錄下的文件,而在 Windows 上可能需要使用 os.popen('dir')。os.popen() 返回一個文件對象,可以通過 read() 方法讀取命令的輸出內(nèi)容,然后通過 print 打印出來。最后,記得關(guān)閉文件對象,釋放資源。
??????? 2、與 os.system() 一樣,os.popen() 也存在一些安全性和平臺差異的問題,也可以使用 subprocess 模塊來執(zhí)行命令,以獲得更多的控制和安全性。
import os
# 執(zhí)行一個簡單的命令,例如列出當(dāng)前目錄下的文件
command = 'ls' # 在 Windows 上可能是 'dir'
# 使用 os.popen() 執(zhí)行命令并獲取輸出文件對象
output_file = os.popen(command)
# 讀取命令的輸出內(nèi)容
output_content = output_file.read()
# 打印命令的輸出內(nèi)容
print(f"命令 '{command}' 的輸出:\n{output_content}")
# 關(guān)閉文件對象
output_file.close()
五、文件路徑拆分:
-
os.path.split(path)
: 將路徑拆分為目錄和文件名。
import os
# 指定路徑
file_path = "/path/to/your/file.txt"
# 使用 os.path.split() 分割路徑
directory, file_name = os.path.split(file_path)
# 打印分割后的結(jié)果
print(f"目錄: {directory}")
print(f"文件名: {file_name}")
-
os.path.splitext(path)
: 將路徑拆分為文件名和擴(kuò)展名。
import os
# 指定文件路徑
file_path = "/path/to/your/file.txt"
# 使用 os.path.splitext() 分割文件路徑
file_name, file_extension = os.path.splitext(file_path)
# 打印分割后的結(jié)果
print(f"文件名: {file_name}")
print(f"擴(kuò)展名: {file_extension}")
六、其他:
-
os.name
: 獲取操作系統(tǒng)名稱('posix' 或 'nt')。
通常,'posix' 表示類 Unix 操作系統(tǒng),'nt' 表示 Windows 操作系統(tǒng)。
import os
# 獲取當(dāng)前操作系統(tǒng)的名稱
current_os_name = os.name
# 打印當(dāng)前操作系統(tǒng)的名稱
print(f"當(dāng)前操作系統(tǒng)的名稱: {current_os_name}")
-
os.path.getsize(path)
: 獲取文件大小。
import os
# 指定文件路徑
file_path = "/path/to/your/file.txt"
# 使用 os.path.getsize() 獲取文件大小
file_size = os.path.getsize(file_path)
# 打印文件大小
print(f"文件 '{file_path}' 的大小: {file_size} 字節(jié)")
-
os.path.getctime(path)
: 獲取文件的創(chuàng)建時間。
import os
import datetime
# 指定文件路徑
file_path = "/path/to/your/file.txt"
# 使用 os.path.getctime() 獲取文件創(chuàng)建時間
ctime_timestamp = os.path.getctime(file_path)
# 將時間戳轉(zhuǎn)換為可讀的日期時間格式
ctime_datetime = datetime.datetime.fromtimestamp(ctime_timestamp)
# 打印文件創(chuàng)建時間
print(f"文件 '{file_path}' 的創(chuàng)建時間: {ctime_datetime}")
-
os.path.getmtime(path)
: 獲取文件的最后修改時間。
import os
import datetime
# 指定文件路徑
file_path = "/path/to/your/file.txt"
# 使用 os.path.getmtime() 獲取文件最后修改時間
mtime_timestamp = os.path.getmtime(file_path)
# 將時間戳轉(zhuǎn)換為可讀的日期時間格式
mtime_datetime = datetime.datetime.fromtimestamp(mtime_timestamp)
# 打印文件最后修改時間
print(f"文件 '{file_path}' 的最后修改時間: {mtime_datetime}")
七、更多
os模塊 官方文檔:os — Miscellaneous operating system interfaces文章來源:http://www.zghlxwxcb.cn/news/detail-771934.html
os模塊 中文文檔:os — 操作系統(tǒng)接口文章來源地址http://www.zghlxwxcb.cn/news/detail-771934.html
到了這里,關(guān)于Python中的os模塊中的常用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!