程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【python學習13】基礎的文件和目錄操作

編輯:Python

 (一)編碼格式的介紹

 

修改py文件的編碼格式:在程序第一行寫 #encoding=gbk 修改為gbk編碼格式 

(二)文件的讀寫原理(讀取磁盤文件中的內容)

 

file=open("a.txt","r") #"r"表示read
print(file.readlines()) #readlines()會將文本文件中的內容讀出且以列表形式展示
file.close()

 (三)常用的文件打開方式

source_file=open("logo.png",rb) #源文件以讀的二進制方式讀取
target_file=open("copy.png",wb) #目標文件以寫的二進制文件寫,目標文件是copy.png
target_file.write(source_file.read())
source_file.close()
target_file.close()

 (四)文件對象的常用方法

file=open('a.txt','r')
print(file.read())
print(file.readline())
print(file.readlines())#作為列表返回

tell()方法指針位置從0開始算

flush()方法之後仍然可以向文件寫入內容(因為沒有關閉文件),但close()方法之後不行

(五)with語句(上下文管理器)

①若一個類中實現了特殊方法__enter__()和__exit__(),則該類遵守了上下文管理協議,該類的實例對象稱為上下文管理器 

②離開運行時上下文,會自動調用上下文管理器的特殊方法__exit__()進行退出

with open("c.txt","r") as file: #相當於file=open("c.txt","r")
print(file.read()) #不用再寫file.close(),因為離開with語句塊時自動關閉文件資源
#with語句實現文件的復制
with open("a.png","rb") as source_file:
with open("b.png","wb") as target_file:
target_file.write(source_file.read())

 (六)目錄操作

import os
os.system("notepad.exe") #打開記事本,也可在WIN中輸入notepad
os.system("calc.exe") #打開計算器,也可在WIN中輸入
#os模塊也可直接調用可執行文件

 1,os模塊操作目錄相關函數

 

該部分函數和ubuntu系統的終端命令又相似 

該部分一般用在辦公自動化

import os
print(os.getcwd())
lst=os.listdir("../chap15") #listdir()函數返回列表,".."表示上一級目錄
print(lst)
os.mkdir(newdir) #創建目錄
os.makedirs("/a/b/c") #創建多級目錄
os.rmdir(newdir) #刪除目錄
os.removedirs("a/b/c") #刪除多級目錄

2,os.path模塊操作目錄相關函數

import os.path
print(os.path.abspath('demo3.py'))#獲取demo3.py文件的絕對路徑
print(os.path.exists('demo13.py'),os.path.exists('12.txt'))#結果返回True/False
print(os.path.join('E:\\python','demo6.py')) #前後進行拼接即E:\python\demo6.py
print(os.path.split('E:\\vippython\\chapter11\\demo.py'))#將文件路徑和文件名分開即('E:\\vippython\\chapter11','demo.py')
print(os.path.splitext('demo4.py'))#輸出{'demo4','.py'}
print(os.path.basename('E:\\vippython\\chapter11\\demo.py'))#輸出demo.py,從路徑中提取文件名
print(os.path.dirname('E:\\vippython\\chapter11\\demo.py'))#輸出E:\vippython\chapter11,從路徑中提取目錄,不包括文件名
print(os.path.isdir('E:\\vippython\\chapter11\\demo.py'))#輸出False,因為demo.py不是路徑名

(七) 實際案例代碼

辦公自動化 中剛開始學的就是 文件處理 

#列出指定目錄下的所有.py文件
import os
path=os.getcwd() #獲取當前路徑,當然也可以指定相應路徑
lst=os.listdir(path)
for filename in lst:
if filename.endswith('.py'):
print(filename)
#逐次獲取主目錄和子目錄下的對應目錄路徑,目錄名,文件名
import os
path=os.getcwd()#獲取當前路徑,也可以指定路徑
lst_files=os.walk(path)
for dirpath,dirname,filename in lst_files: #會逐層逐次訪問主目錄和子目錄下的路徑,目錄名,文件名
print(dirpath) #輸出當前目錄的路徑
print(dirname) #輸出當前目錄下的子目錄名
print(filename) #輸出當前目錄下的文件名不是子目錄名

 第二個代碼塊中,用到了 os模塊中重要的方法walk(), 該方法可以遞歸遍歷主目錄下的文件以及主目錄中子目錄下的文件

(八)知識點總結


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved