Python :open文件操作,配合read()使用!


python:open/文件操作

 

 

open/文件操作
f=open('/tmp/hello','w')

#open(路徑+文件名,讀寫模式)

 如何打開文件

      handle=open(file_name,access_mode="r")

  file_name 變量包含我們希望打開的文件的字符串名稱,access_mode 中的'r'表示讀取,‘w’表示寫入,'a'表示添加,其它可能用到的標實還有‘+’表示讀寫,‘b’表示2進制訪問,如果未提供access_mode,默認為“r”.

如果open()成功,一個文件對象句柄會被返回。

    

filename = raw_input( ' enter file ' )
fobj
= open(filename, ' r ' )
for  eachline  in  fobj:
    
print  eachline,
fobj.close()
# 還記得 print 后面跟的“,”是什么意思吧,表示【每次打印都不換行,而是間隔空格】

 file()內建函數它的功能等於open(),但是可以看出,他是個文件工廠(生成文件對象),類似於int()生成整型對象,dict()生成字典對象,后面會學習

 


#讀寫模式:r只讀,r+讀寫,w新建(會覆蓋原有文件),a追加,b二進制文件.常用模式
如:'rb','wb','r+b'等等

讀寫模式的類型有:

rU 或 Ua 以讀方式打開, 同時提供通用換行符支持 (PEP 278)
w     以寫方式打開,
a     以追加模式打開 (從 EOF 開始, 必要時創建新文件)
r+     以讀寫模式打開
w+     以讀寫模式打開 (參見 w )
a+     以讀寫模式打開 (參見 a )
rb     以二進制讀模式打開
wb     以二進制寫模式打開 (參見 w )
ab     以二進制追加模式打開 (參見 a )
rb+    以二進制讀寫模式打開 (參見 r+ )
wb+    以二進制讀寫模式打開 (參見 w+ )
ab+    以二進制讀寫模式打開 (參見 a+ )


注意:

1、使用'W',文件若存在,首先要清空,然后(重新)創建,

2、使用'a'模式 ,把所有要寫入文件的數據都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,將自動被創建。



f.read([size]) size未指定則返回整個文件,如果文件大小>2倍內存則有問題.f.read()讀到文件尾時返回""(空字串)

file.readline() 返回一行

file.readline([size]) 返回包含size行的列表,size 未指定則返回全部行

for line in f: print line #通過迭代器訪問

f.write("hello\n") #如果要寫入字符串以外的數據,先將他轉換為字符串.

f.tell() 返回一個整數,表示當前文件指針的位置(就是到文件頭的比特數).

f.seek(偏移量,[起始位置])

用來移動文件指針

偏移量:單位:比特,可正可負

起始位置:0-文件頭,默認值;1-當前位置;2-文件尾

f.close() 關閉文件

Code:


#!/usr/bin/env python
# Filename: using_file.py

poem='''\Programming is funWhen the work is doneif you wanna make your work also fun: use Python!'''
f=file('poem.txt','w') # open for 'w'riting
f.write(poem) # write text to file
f.close() # close the file
f=file('poem.txt')

# if no mode is specified, 'r'ead mode is assumed by default
while True:
line=f.readline()
if len(line)==0: # Zero length indicates EOF
break
print line,
# Notice comma to avoid automatic newline added by Python
f.close()
# close the file

read()使用及用法

我們談到“文本處理”時,我們通常是指處理的內容。Python 將文本文件的內容讀入可以操作的字符串變量非常容易。文件對象提供了三個“讀”方法: .read()、.readline() 和 .readlines()。每種方法可以接受一個變量以限制每次讀取的數據量,但它們通常不使用變量。 .read() 每次讀取整個文件,它通常用於將文件內容放到一個字符串變量中。然而 .read() 生成文件內容最直接的字符串表示,但對於連續的面向行的處理,它卻是不必要的,並且如果文件大於可用內存,則不可能實現這種處理。

.readline() 和 .readlines() 非常相似。它們都在類似於以下的結構中使用:

        fh = open('c:\\autoexec.bat')
         for  line in  fh.readlines(): 
         print  line
 
      

 

.readline() 和 .readlines() 之間的差異是后者一次讀取整個文件,象 .read() 一樣。.readlines() 自動將文件內容分析成一個行的列表,該列表可以由 Python 的 for ... in ... 結構進行處理。另一方面,.readline() 每次只讀取一行,通常比 .readlines() 慢得多。僅當沒有足夠內存可以一次讀取整個文件時,才應該使用 .readline()。

 

seek的使用方法

seek():移動文件讀取指針到指定位置

tell():返回文件讀取指針的位置

seek()的三種模式:

    (1)f.seek(p,0)  移動當文件第p個字節處,絕對位置

    (2)f.seek(p,1)  移動到相對於當前位置之后的p個字節

    (3)f.seek(p,2)  移動到相對文章尾之后的p個字節

 

最后

      • close – 關閉文件。跟你編輯器的 文件 -> 保存.. 一個意思。
      • read – 讀取文件內容。你可以把結果賦給一個變量。
      • readline – 讀取文本文件中的一行。
      • truncate – 清空文件,請小心使用該命令。
      • write(stuff) – 將 stuff 寫入文件。

 


免責聲明!

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



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