Python 文件I/O和File方法
- 概念擴充
- Input/Output,也就是輸入和輸出
由于程序和運行時數(shù)據(jù)是在內(nèi)存中駐留莲兢,由CPU這個超快的計算核心來執(zhí)行汹来,涉及到數(shù)據(jù)交換的地方续膳,通常是磁盤、網(wǎng)絡(luò)等收班,就需要IO接口坟岔;注意:輸入和輸出是一個相對的概念,但這里都是針對我們的程序而言的闺阱。- IO編程中炮车,Stream(流)和緩沖概念
IO編程中,Stream(流)是一個很重要的概念酣溃,可以把流想象成一個水管瘦穆,數(shù)據(jù)就是水管里的水,但是只能單向流動赊豌。Input Stream就是數(shù)據(jù)從外面(磁盤扛或、網(wǎng)絡(luò))流進內(nèi)存,Output Stream就是數(shù)據(jù)從內(nèi)存流到外面去碘饼。對于瀏覽網(wǎng)頁來說熙兔,瀏覽器和新浪服務(wù)器之間至少需要建立兩根水管,才可以既能發(fā)數(shù)據(jù)艾恼,又能收數(shù)據(jù)住涉。
由于管道的傳輸可能雙發(fā)讀寫速度的不一致性,提高效率考慮钠绍,采用了緩沖技術(shù)舆声;還是上面的例子,加上一個小桶柳爽,數(shù)據(jù)裝滿“桶”了媳握,再讀寫傳輸。[有的地方叫做:同步和異步磷脯;原理一樣蛾找。Java中也有類似概念,NIO后好像有了"塊"操作的概念]
- 常見的IO的操作
- 打印到屏幕
~~~
print "Python hello world赵誓,和我一起學(xué)python";
~~~
- 讀取鍵盤輸入
~~~python
方式1
str = raw_input("請輸入:");
print "你輸入的內(nèi)容是: ", str
方式2
str = input("請輸入:");
print "你輸入的內(nèi)容是: ", str
~~~
- 文件操作:文件的基本操作打毛,增刪改查
- 打開:os.fdopen(fd[, mode[, bufsize]])
> ~~~python
f = open('python_text.txt', 'w')
~~~
- file_name:file_name變量是一個包含了你要訪問的文件名稱的字符串值。
- ccess_mode:access_mode決定了打開文件的模式:只讀俩功,寫入隘冲,追加等。所有可取值見如下的完全列表绑雄。這個參數(shù)是非強制的展辞,默認文件訪問模式為只讀(r)。
- buffering:如果buffering的值被設(shè)為0万牺,就不會有寄存罗珍。如果buffering的值取1洽腺,訪問文件時會寄存行。如果將buffering的值設(shè)為大于1的整數(shù)覆旱,表明了這就是的寄存區(qū)的緩沖大小蘸朋。如果取負值,寄存區(qū)的緩沖大小則為系統(tǒng)默認扣唱。
- 關(guān)閉:os.close(fd)
f = close()
~~~
使用系統(tǒng)資源藕坯,必須占用,這個是個 好習(xí)慣
- 重命名(可修改目錄):os.renames(old, new)
os.rename( "python_text.txt", "new_python_text.txt" )
~~~
需要兩個參數(shù)噪沙,當(dāng)前的文件名和新文件名
- 刪除: os.remove(path)
os.remove( "new_python_text.txt")
~~~
需要提供要刪除的文件名作為參數(shù)炼彪。
- 目錄操作
- **當(dāng)前目錄下創(chuàng)建新的目錄 **:os.mkdir(path[, mode])
os.mkdir("newdir")
需要提供一個包含了要創(chuàng)建的目錄名稱的參數(shù)
**注意 **:*當(dāng)前目錄下創(chuàng)建
- **改變當(dāng)前的目錄**:os.chdir(path)
> ~~~python
# 將當(dāng)前目錄改為"/home/newdir"
os.chdir("/home/newdir")
#給出當(dāng)前的目錄
print os.getcwd()
- **刪除目錄 **:os.remove(path)
os.rmdir('dirname')
刪除" /tmp/test"目錄的例子。目錄的完全合規(guī)的名稱必須被給出正歼,否則會在當(dāng)前目錄下搜索該目錄辐马。
- 補充和追加內(nèi)容:
> IO和File這部分內(nèi)容可以實現(xiàn)蠻多的操作,例如文件的批量新建局义、拷貝等喜爷,包括使用正則時找你要的文件等...
1. 文件的讀寫操作
read(file_name [, access_mode][, buffering])
write(file_name [, access_mode][, buffering])
注意:返回的是文件對象
>~~~python
f = open('python_text.txt', 'w')
f.write("hello_python")
f.close()
f=open('python_text.txt', 'r')
s = f.read()
f.close()
- file_name:file_name變量是一個包含了你要訪問的文件名稱的字符串值。
- access_mode:access_mode決定了打開文件的模式:只讀萄唇,寫入檩帐,追加等。所有可取值見如下的完全列表另萤。這個參數(shù)是非強制的湃密,默認文件訪問模式為只讀(r)。
- buffering:如果buffering的值被設(shè)為0仲墨,就不會有寄存勾缭。如果buffering的值取1揍障,訪問文件時會寄存行目养。如果將buffering的值設(shè)為大于1的整數(shù),表明了這就是的寄存區(qū)的緩沖大小毒嫡。如果取負值癌蚁,寄存區(qū)的緩沖大小則為系統(tǒng)默認刽严。
-
打開文件的模式
好多就截圖了咸这,可以記住常用就可以(也i挺好記的)
- 最后結(jié)語:aboutmore
其實上面介紹的都是常用的部分
以下擴充:
- 添加總結(jié)思維導(dǎo)圖:【剛開始分享百度腦圖】http://naotu.baidu.com/file/3e40949648c3e50b003adeebe334c063?token=2d1fecb7301358ce
- 代碼比較簡單不貼了瘪吏,后期看上傳值github或者coding吧吁讨!
時間:2017年6月28日00:56:25