python中OS模塊操作文件和目錄


在python中執行和操作目錄和文件的操作是通過內置的python OS模塊封裝的函數實現的。

首先導入模塊,並查看操作系統的類型:

>>> import os
os.name # 操作系統類型
'nt'

nt,是Windows;posix是Linux或者unix

1、對目錄和文件的操作。

>>> os.path#查看當前工作路徑
<module 'ntpath' from 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\ntpath.py'>

>>> os.path.abspath('.')#查看當前工作的絕對路徑
'C:\\Users\\Administrator\\Desktop\\enen\\python'

>>> os.path.join('C:\\Users\\Administrator\\Desktop\\enen\\python','dede')#在當前目錄下新建一個文件夾,並將文件路徑顯示出來
'C:\\Users\\Administrator\\Desktop\\enen\\python\\dede'


>>> os.mkdir('C:\\Users\\Administrator\\Desktop\\enen\\python\\test')#創建一個目錄

>>> os.rmdir('C:\\Users\\Administrator\\Desktop\\enen\\python\\test')#刪除一個目錄。
>>> #注意,Windows和Linux環境下路徑表示有所差異

2、對目錄文件路徑拆分

>>> os.path.split('C:\\Users\\Administrator\\Desktop\\enen\\python\\test.txt') #對當前文件路徑拆分
('C:\\Users\\Administrator\\Desktop\\enen\\python', 'test.txt')
>>> os.path.split('C:\\Users\\Administrator\\Desktop\\enen\\python\\te.txt')#對當前不存在的文件路徑進行拆分
('C:\\Users\\Administrator\\Desktop\\enen\\python', 'te.txt')
>>> 
>>> os.path.splitext('C:\\Users\\Administrator\\Desktop\\enen\\python\\test.txt')#使用splitext進行路徑拆分
('C:\\Users\\Administrator\\Desktop\\enen\\python\\test', '.txt')

以上注意兩點:a.合並、拆分路徑的函數並不要求目錄和文件要真實存在,它們只對字符串進行操作,例如演示代碼所示。b.使用splitext()進行拆分可以直接得到文件的擴展名。

 

3、復制文件的函數在os模塊中沒有提供,可以使用shutil模塊中的copyfile()函數進行操作。它是os模塊的補充。有關shutil模塊中函數的調用http://www.jb51.net/article/87984.htm

 

4、對當前目錄文件進行的篩選:

>>> [x for x in os.listdir('.') if os.path.isdir(x)]#使用列表生成式,並使用if進行判斷,os.listdir可以列出文件和目錄,os.path.isdir()函數判斷某一路徑是否為目錄。
['.lein', '.local', '.m2', '.npm', '.ssh', '.Trash', '.vim', 'Applications', 'Desktop', ...]
>>> [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']#篩選出擴展名是py的所有文件,語法使用很是精巧,對當前拆分的文件路徑進行索引判斷,返回py擴展名的文件。
['apis.py', 'config.py', 'models.py', 'pymonitor.py', 'test_db.py', 'urls.py', 'wsgiapp.py']

學習廖老師教程做的筆記。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM