1. 程式人生 > >Python:文件操作

Python:文件操作

span see 結果 源代碼 小工具 .html 頂級 單個 pre

一、文件打開方式

格式: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.close
f = 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 os
print(os.sep)
#輸出:\

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

實例:

import os

for i in os.walk(rE:\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:文件操作