Python:檔案操作

來源:互聯網
上載者:User

標籤:ase   對象   isl   isa   cap   指定   二進位   from   函數   

一、檔案開啟檔案

格式:open(file, mode = ‘r‘, buffering = -1, encoding = None, errors = None, newline = None, closefd = True, open = None)

==>一般常用file、mode兩個參數;

#file:被開啟檔案所在地址 + 檔案名稱;若只有檔案名稱,認為是在目前的目錄下開啟檔案(正則執行的.py檔案所有檔案夾);預設位置為當前;

#mode:檔案開啟的模式;

模式 執行操作
‘r’ 以唯讀方式開啟檔案(預設);#若檔案不存在,報異常,不建立;
‘w’ 以寫入的方式建立新檔案;#若檔案名稱存在,將其覆蓋;
‘x’ 建立檔案;#如果檔案存在,引發異常;
‘a’  以寫入方式開啟檔案;#若檔案存在,可在檔案後追加內容;若檔案不存在,建立檔案;
‘b’ 以二進位模式開啟檔案;#如‘rb’、‘wb’、‘ab’、‘xb’等;
‘t’ 以文字模式開啟檔案(預設);
‘+’ k可讀寫入模式;(添加到其它模式中使用)
‘U’ 通用分行符號支援

 

 

 

 

 

 

 

 

 

f = open(‘test.txt‘, ‘w‘)s = ‘這小夥真帥‘f.write(s)f.closef = open(‘test.txt‘)print(type(f))#輸出:<class ‘_io.TextIOWrapper‘>#_io.TextIOWrapper:是什麼意思?print(list(f))#輸出:[‘這小夥真帥‘]
 二、檔案對象的方法
檔案對象的方法 執行操作 文法格式
close() 關閉檔案; f.close()
read(size = -1)

從檔案中讀取size個字元(不是位元組),若未給定size值或給負值時,

讀取剩餘的(從檔案指標位置)所有位元組然後做為字串返回;

f.read(n):

從指標位置起,讀取n個位元組

readline() 從檔案指標位置開始,讀取一整行字串;#一整行:以分行符號 ‘\n’ 來分行; f.read()
write(str) 將字串寫入檔案;  #所寫入的資料必須是字串; f.write(‘字串‘)
writelines(sep) 向檔案寫入字串序列sep;#sep是一個返回字串的可迭代對象,不是字串本身; f.writelines(字串的可迭代對象)
seek(offset, from)

移動檔案指標;#從offset(0/1/2)處,位移from個位元組;

#0代表檔案起始位置;1代表指標當前位置;2代表檔案末尾;

#from為具體的正整數;

f.seek(1, size):

#從當前指標位置移動size個位元組;

tell() 返回指標當前位置;#結果為正整數,表示指標距離檔案起始位置的位元組數; f.tell()

 

 

 

 

 

 

 

 

 

 

 

 #檔案指標:相當於一個‘書籤’,對檔案進行引索、讀取、寫入時,從指標位置開始操作;

#一個字元是1個位元組;一個漢字是2個位元組;

#檔案本身可以看做是一個字串,讀取檔案時,返迴文件對象,可以被迭代操作,與字串迭代操作一樣;

f = open(‘test.txt‘, ‘w‘)for i in f:    print(i)#輸出:這小夥真帥

 

三、python檔案系統方法  1)OS模組中關於檔案/目錄常的函數

#對於檔案系統的訪問,Python一般通過OS模組來實現;

#Python是誇平台的語言:同樣的原始碼在不同的作業系統上執行時,不需要修改;

#OS:系統模組;(Operating System)

#使用OS模組下的方法前,先匯入OS模組:import os

 

 OS模組中關於檔案/目錄常的函數

 

函數名 功能 文法格式
getcwd() 返回當前工作目錄;#即當前工作的物理地址 os.getcwd()
chdir(path) 改變工作目錄;#path指代需要切換到的目錄 os.chdir(path)
listdir(path = ‘.‘)

l列舉指定目錄中的檔案名稱(包含檔案夾的名字),其中檔案名稱帶格式(如‘.py‘、‘.txt‘),以[‘str1‘, ‘str2‘]形式返回;

#‘.‘:表示當前工作目錄,也是預設值; #‘..‘:表示工作目錄的上一層目錄;

#path指定具體地址,如(‘E:\pythonwj‘):返回指定地址下的檔案名稱;

os.listdir(path = ‘.‘)
mkdir() 在當前工作目錄下,建立單個檔案夾(不是檔案);#如果檔案夾已存在,拋出異常; os.mkdir()
makedirs(path)

在指定目錄下,建立多層檔案夾;#如果檔案夾已存在,拋出異常;

#例1:os.makedirs(r‘.\a\b\c‘):a在當前工作目錄下,b在a檔案夾下,c在b檔案夾下;

#r‘.\a\b\c‘:要加r,表示原始字串;若在當前工作目錄下建立,要加 ‘.\‘ ;

#例2:os.makedirs(r‘E:\pythonwj\a\b\c‘)

os.makedirs(path)

 remove(path) 刪除當前工作目錄下指定的檔案;#不是檔案夾   os.remove(path)
rmdir(path)  刪除當前工作目錄下指定的單層檔案夾;#檔案下不在有其它檔案;  os.rmdir(path) 
removedirs(path) 

刪除當前工作目錄下指定的多層檔案;#連同檔案夾下的其它檔案夾同時刪除;

#os.removedirs(r‘a\b\c‘):刪除當前工作目錄下的a檔案夾,以及a檔案夾下的b、c檔案夾; 

os.removedirs(path) 
rename() 

重新命名當前工作目錄下的檔案夾或檔案;

#os.rename(‘檔案名稱1/檔案夾名1‘, ‘檔案名稱2/檔案夾名2‘):

==>將目前的目錄下的檔案1/檔案夾1,更名為 檔案2/檔案夾2

 os.rename(name1,name2)
 system()

s使用系統的小工具;

#例:os.system(‘calc‘):開啟系統的計算機; 

 os.system(‘小工具代碼‘)
 walk(top)

 遍曆top參數指定路徑下的所有子目錄,並將結果返回一個三元組(路徑, [包含目錄], [包含檔案])

#top:需要遍曆的頂級目錄的路徑

 os.walk(top)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 擴充

os.curdir表示目前的目錄(‘.‘);

os.pardir表示上一級目錄(‘..‘);

os.sep表示路徑的分隔字元,比如Windows系統下為‘\\’,Linux系統下為‘/’;

os.linesep表示當前平台使用的行中支符;(Windows下為‘\r\n’,Linux下為‘\n’)

os.name表示當前使用的作業系統;

import osprint(os.sep)#輸出:\

#walk(top)用法,及與os.path.walk()的區別,參見:Python:os.walk()和os.path.walk()用法

執行個體:

import osfor i in os.walk(r‘E:\pythonwj‘):    print(i)#輸出:# (‘E:\\pythonwj‘, [‘Chapter_2‘, ‘Chapter_3‘, ‘Chapter_4‘, ‘Chapter_5‘, ‘Chapter_6‘], [])# (‘E:\\pythonwj\\Chapter_2‘, [], [‘0_0.py‘, ‘2_1.py‘, ‘2_2.PY‘, ‘2_3.py‘])# (‘E:\\pythonwj\\Chapter_3‘, [], [‘0-0.py‘, ‘3-1.py‘, ‘3-3-1.py‘, ‘3-3-2.py‘, ‘3-4.py‘, ‘3-5.py‘])# (‘E:\\pythonwj\\Chapter_4‘, [], [‘0-0.py‘, ‘0.py‘, ‘00.py‘, ‘4-1.py‘, ‘4-2.py‘, ‘4-4.py‘, ‘4-5.py‘, ‘4-6.py‘, ‘record.txt‘, ‘test.txt‘, ‘test_1.txt‘, ‘test_2.txt‘, ‘test_3.txt‘, ‘txt‘test_2.txt‘, ‘test_3.txt‘, ‘txt.py‘])# (‘E:\\pythonwj\\Chapter_5‘, [], [])# (‘E:\\pythonwj\\Chapter_6‘, [], [])
  二)os.path模組中關於路徑常用的函數
os.path模組中關於路徑常用的函數
函數名 功能及使用方法
basename(path) 去掉目錄路徑,單獨返迴文件名
dirname(path) 去掉檔案名稱,單獨返回目錄路徑;
join(path1[, path2[, ...]]) 將path1和path2各部分組合成一個路徑名
split(path)

分割檔案名稱和路徑,返回(f_path, f_name)元組;

#如果完全使用目錄,它也會將最後一個目錄作為檔案名稱分離,且不會判斷檔案或者目錄是否存在;

splitext(path) 分離檔案名稱和副檔名,返回(f_name, f_extension)元組;
getsize(file) 返回指定檔案的尺寸,單位位元組;
getatime(file) 返回指定檔案最近訪問的時間:浮點型秒數;(可用time模組的gmtime()或者localtime()函數換算)
getctime(file) 返回指定檔案的建立時間:浮點型秒數;(可用time模組的gmtime()或者localtime()函數換算)
getmtime(file) 返回指定檔案最新的修改時間:浮點型秒數;(可用time模組的gmtime()或者localtime()函數換算)

 

 

 

 

 

 

 

 

 

 

 

 

以下函數返回True或False

函數名 功能與使用方法
exists(path) 判斷指定路徑(目錄或者檔案)是否存在
isabs(path) 判斷指定路徑是否為絕對路徑
iadir(path) 判斷指定路徑是否存在且是一個目錄
iafile(path) 判斷指定路徑是否存在且是一個檔案
islink(path) 判斷指定路徑是否存在且是一個符號連結
ismount(path) 判斷指定路徑是否存在且是一個掛載符
samefile(path1, path2) 判斷path1和path2兩個路徑是否指向同一個檔案

Python:檔案操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.