文章目錄
- 檔案的處理
- 取得系統類型
- 取得系統環境
- 執行系統指令
- 操作目錄與檔案
- #檔案與目錄高階處理
- #複製檔
- 移動檔
- 讀取壓縮及歸檔壓縮檔
- #解壓縮檔
##小結-
(相關免費學習推薦:
python影片教學)
#os模組和
shutil模組是Python處理文件/目錄的主要方式。 os模組提供了一種使用作業系統相關功能的便捷方式,shutil模組是一種進階的檔案/目錄操作工具。
檔案的處理
os#模組提供了一些便利功能來使用作業系統資源,例如讀取資源目錄下的文件、在命令列查看某路徑下文件的所有內容等。
取得系統類型
對程式碼進行相容性開發以適應不同作業系統時透過作業系統類型進行判斷就可以輕鬆解決。
import osimport sysprint(os.name) # 返回nt代表Windows,posix代表Linuxprint(sys.platform) # 更详细信息
登入後複製
取得系統環境
#對環境變數進行相關設定時,常常會呼叫模組
environ 模組。
os.environ是以字典的形式傳回系統環境變量,要取得具體的屬性值,可以用索引,也可以用方法
getenv():
import osprint(os.environ)print(os.environ['PATH'])print(os.getenv('PATH'))
登入後複製
執行系統指令
使用os模組
system()方法可以執行shell指令,正常執行會傳回0。使用格式是
os.system("bash command")。
當非控制台編寫時,
system()只會呼叫系統指令而不會執行,執行結果可透過
popen()函數傳回
file物件進行讀取獲得。
import os
os.system('ping www.baidu.com')os.popen('ping www.baidu.com').read()
登入後複製
操作目錄與檔案
#使用os模組操作目錄和檔案時Python開發最常見的功能之一。
方法 |
說明 |
範例 |
#os.getcwd() |
取得目前目錄路徑 |
|
os.chdir('目標路徑') |
更改目前腳本目錄 |
|
os.listdir(path) |
列出目錄下所有檔案 |
|
os.mkdir(path) |
建立單一目錄 |
|
os.makedirs(path) |
#建立多層目錄 |
os.rmdir(path) |
刪除單級空目錄 |
os.removedirs( path) |
刪除多層目錄 |
os.rename("檔案或目錄名稱",」目標名稱「) |
重新命名目錄或檔案 |
|
os.path.abspath() |
取得絕對路徑 |
|
##os.path.split(path) | 將路徑分解為(資料夾,檔案名稱)若路徑字串最後一個字元是\,則只有文件夾部分有值; 若路徑字串中均無\,則只有檔案名稱部分有值; 若路徑字串有\且不再最後,則資料夾檔案名稱都有值。
|
|
os.path.join(path1,path2) | 將路徑組合 |
os.path.dirname(path) | 取得path中的資料夾部分 |
|
#os.path.basename( path) | 取得path中的檔名 |
os.path.exists(path) | 判斷檔案或資料夾是否存在 |
|
os.path.isfile(path) | #判斷路徑是否為檔案 |
|
os.path.isdir(path) | 判斷路徑是否為目錄 |
|
## os.path.getsize(path)
取得檔案或資料夾大小 |
|
|
#os.path.getctime(path)
取得檔案或資料夾建立時間 |
|
|
os.path.getatime(path)
#取得檔案或資料夾最後存取時間 |
|
|
os.path.getmtime(path)
取得檔案或資料夾最後修改時間 |
|
|
os.sep()
路徑分割符 |
|
|
os.extsep()
檔案名稱與後綴之間的分割符 |
|
#os.pathsep()
路徑分隔符號 |
|
os.linesep()
#換行符號 |
|
#(插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/
文件和目录高级处理
相比os
模块,shutil
模块用于文件和目录的高级处理,提供了支持文件赋值、移动、删除、压缩和解压等功能。
复制文件
shutil
模块的主要作用是赋值文件,大概有以下七种实现:
shutil.copyfileobj(file1,file2)
覆盖复制
将file1的内容覆盖file2,file1、file2表示打开的文件对象。
shutil.copyfile(file1,file2)
覆盖复制
也是覆盖,但是无须打开文件,直接用文件名进行覆盖(其源码还是调用的copyfileobj)。
shutil.copymode(file1,file2)
权限复制
仅复制文件权限,不更改文件内容、组和用户,无返回对象。
shutil.copystart(file1,file2)
状态复制
复制文件的所有状态信息,包括权限、组、用户和时间等,无返回对象。
shutil.copy(file1,file2)
内容和权限复制
复制文件的内容和权限,相当于先执行了copyfile再执行了copysmode。
shutil.copy2(file1,file2)
内容和权限复制
复制文件的内容及所有状态信息,相当于先执行了copyfile再执行了copystart。
shutil.copytree()
递归复制
递归地复制文件内容及状态信息
移动文件
使用函数shutil.move()
函数可以递归地移动文件或重命名,并返回目标,若目标是现有目录则src再当前目录移动;若目标已经存在且不是目录,则可能会被覆盖。
读取压缩及归档压缩文件
使用函数shutil.make_archive()
创建归档文件,并返回归档后的名称。
语法如下:
shutil.make_archive(base_name,format[,root_dir[,base_dir[,verbose[,dry_run[,owner[,group[,logger]]]]]]])
- base_name为需要创建的文件名,包括路径
- format表示压缩格式,可选zip、tar或bztar等
- root_dir为归档的目录
import shutil
path_1 = r'D:\PycharmProjects\Hello'path_2 = r'D:\PycharmProjects\Hello\shutil-test'new_path = shutil.make_archive(path_2,'zip',path_1)print(new_path)
登入後複製
解压文件
使用函数shutil.unpack_archive(filename[,extract_dir[,format]])
分析拆档。
- filename是归档的完整路径
- extract_dir是解压归档的目标目录名称
- format是解压文件的格式
import shutilimport os
shutil.unpack_archive('D:\PycharmProjects\Hello\shutil-test.zip','D:\\testdir')print(os.listdir('D:\\testdir'))
登入後複製
小结
需要注意的是不同的操作系统中,路径分隔符不一样,在文件处理时需要考虑。也可以使用os.sep()
来替代文件分隔符,因为操作系统而造成的程序异常。此外处理文件时往往需要注意文件权限,还有注意文件和文件夹的区别,使用递归等。
Python系列博客持续更新中
大量免费学习推荐,敬请访问python教程(视频)
以上是Python詳解os模組和shutil模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!