本文內容涉及python開啟/建立檔案物件,檔案的讀寫、檔案指標位置的移動、獲取命令列引數。
1. open()
open函式以指定模式返回乙個file物件,如: file_object = open(filename,access_mode=』r',buffering=-1),預設是以r模式開啟檔案。
filename:表示要開啟檔名(字串),可以是絕對路徑或相對路徑2. file()access_mode:檔案開啟的模式(字串), 常用的模式有』r',』w',』a',不是很常用的還有』u'和』b』
『r』模式:以讀方式開啟,不能進行寫操作,檔案必須是已經存在的
『r+』模式:以讀寫方式開啟,檔案必須是已經存在的
『w』模式:以寫方式開啟,不能進行讀操作,若檔案存在,則先清空,然後重新建立;若不存在,則建立檔案
『w+』模式:以讀寫方式開啟,若檔案存在,則先清空,然後重新建立;若不存在,則建立檔案
『a』模式:以追加方式開啟,不能進行讀操作,把資料追加到檔案的末尾;若不存在,則建立檔案
『a+』模式:以讀寫方式開啟,把資料追加到檔案的末尾;若不存在,則建立檔案
『b』模式:以二進位制模式開啟,不能作為第乙個字元出現,需跟以上模式組合使用,如』rb』,'rb+』等,
『u』模式:表示通用換行符支援,檔案必須是已經存在的
buffering:表示訪問檔案採用的緩衝方式,0表示不緩衝,1表示緩衝一行資料,其他大於1的值表示使用給定值作為緩衝區大小,負數表示使用系統預設緩衝機制,預設是-1,一般使用系統預設方式。
file是乙個類,file()以指定模式建立乙個file物件,跟open()具有相同的功能,可以任意替換。一般使用open來建立乙個file物件,使用isinstance(obj,file)來判斷obj是否是乙個檔案物件。
3.read()、readline()、readlines()
read():讀取指定數目個位元組到字串中,負數將讀取至檔案末尾,預設是-1
>>> file_obj = open('test.txt','r')
>>> file_obj.read()
'dfdff\n'
>>> file_obj.seek(0)
>>> file_obj.read(0)
''>>> file_obj.read(1)
'd'>>> file_obj.read(2)
'fd'
>>> file_obj.read(-1)
'ff\n'
>>> file_obj.seek(0)
>>> file_obj.read(1000)
'dfdff\n'
>>> file_obj.seek(0)
>>> file_obj.read(-5)
'dfdff\n'
readline():讀取檔案的一行,包括行結束符,可以制定size引數的值,預設是-1>>> file_obj = open('test.txt','r')
>>> file_obj.readline()
'dfdff\n'
>>> file_obj.readline(2)
'al'
>>> file_obj.readline(-1)
'exzhou\n'
readlines():讀取所有剩餘的行,然後作為乙個字串列表返回
>>> file_obj.seek(0)
>>> file_obj.readlines()
['dfdff\n', 'alexzhou\n', 'zhoujianghai\n']
4. write()、writelines()
ps:這兩個方法都不會自動加上行結束符,需在寫入資料前自己加上
>>> file_obj = open('test.txt','w+')
>>> file_obj.write('alexzhou')
>>> file_obj.write(' python')
>>> file_obj.seek(0)
>>> file_obj.readline()
'alexzhou python'
>>> l = ['my','name','is','zhoujianghai']
>>> l = ' '.join(l)
>>> file_obj.writelines(l)
>>> file_obj.seek(0)
>>> file_obj.readline()
'alexzhou pythonmy name is zhoujianghai'
>>> file_obj.write('hello \n')
>>> file_obj.write('world \n')
>>> file_obj.seek(0)
>>> file_obj.readline()
'alexzhou pythonmy name is zhoujianghaihello \n'
>>> file_obj.readline()
'world \n'
5. seek()、tell()
seek():移動檔案指標到不同的位置,可以指定偏移量和起始位置。起始位置0表示從檔案頭開始,1表示從當前位置開始,2表示從檔案尾開始,預設是0.
tell():表示當前檔案指標在檔案中的位置,從檔案頭算起。
>>> file_obj.seek(0)
>>> file_obj.tell()
0>>> file_obj.seek(5)
>>> file_obj.tell()5
>>> file_obj.seek(5,1)
>>> file_obj.tell()
10>>> file_obj.seek(5,2)
>>> file_obj.tell()
57>>> file_obj.seek(5,0)
>>> file_obj.tell()
5
6. 檔案迭代和關閉檔案
可以使用for迴圈一行一行讀取檔案
>>> file_obj = open('test.txt','w+')
>>> file_obj.write('hello \n')
>>> file_obj.write('world \n')
>>> file_obj.seek(0)
>>> for eachline in file_obj:
... print eachline,
...
hello
world
>>> file_obj.close()
ps:print後面加乙個分號的作用:避免print語句預設在列印的內容後面加乙個換行符號。
7. os模組常用屬性
由於各作業系統的行分隔符和檔案分隔符不一樣,所以可以使用os模組的以下屬性避免**移植時碰到這些問題。
os.linesep 行分隔符字串看下面的列印結果os.sep 檔案分隔符字串
os.pathsep 路徑分隔符字串
os.curdir 當前目錄字串
os.pardir 父目錄字串
>>> import os
>>> os.sep
'/'>>> os.linesep
'\n'
>>> os.pathsep
':'>>> os.curdir
'.'>>> os.pardir
'..'
8. 獲取命令列引數
建立ar**.py檔案,輸入下面**
import sys
commands = sys.ar**
print commands
執行:pyton ar**.py 123,列印結果:
['ar**.py', '123']
alex zhou
python 檔案操作1
f.readline 是一行一行的讀,讀到哪一行游標就會停留,下一次繼續從游標處開始讀。讀取前五行 for i in range 5 print f.readline f.readlines 將檔案讀取為乙個列表 for line in f print line 一行行讀,記憶體中只儲存一行,檔案已...
python 檔案file操作 1
dir file class delattr doc enter exit format getattribute hash init iter new reduce reduce ex repr setattr sizeof str subclasshook close closed encodi...
python 檔案操作基礎 1
import os 增加資料夾 r代表路徑中不存在轉義字元 os.mkdir r users jiahongming documents testwork pythonstudy 建立單個資料夾 os.mkdir users jiahongming documents testwork python...