python文件输入符_python文件IO与file操作
1 標(biāo)準(zhǔn)輸入輸出IO
- (1) 打印到屏幕 print()
print(self, *args, sep=’ ‘, end=’n’, file=None):
把傳遞的表達(dá)式 轉(zhuǎn)換成一個(gè) 字符串表達(dá)式
known special case of print
"""
print(value, ..., sep=' ', end='n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
- (2) 讀取鍵盤的輸入 print()
input(*args, **kwargs):
從標(biāo)準(zhǔn)輸入讀取一個(gè)行,并返回一個(gè)字符串
Read a string from standard input
注意 python2 中
raw_input 與python3的input一樣
input可以接收一個(gè)Python表達(dá)式作為輸入,并將運(yùn)算結(jié)果返回
str = input("請(qǐng)輸入表達(dá)式:");
[i for i in range(4)]
print "你輸入的內(nèi)容是: ", str
[0,1,2,3]
2 數(shù)據(jù)文件的讀寫,打開和關(guān)閉文件
- (1) 創(chuàng)建file文件對(duì)象—open()方法
用Python內(nèi)置的open()函數(shù)打開一個(gè)文件,創(chuàng)建一個(gè)file對(duì)象,然后使用相關(guān)的方法才可以調(diào)用它進(jìn)行讀寫
f=open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
f--文件句柄對(duì)象
file:訪問的文件名稱。
mode:決定了打開文件的模式:只讀,寫入,追加等。默認(rèn)文件訪問模式為只讀(r)。
encoding:指定編碼格式,gbk,utf8..。
buffering:如果buffering的值被設(shè)為0,就不會(huì)有寄存。如果buffering的值取1,訪問文件時(shí)會(huì)寄存行。如果將buffering的值設(shè)為大于1的整數(shù),表明了這就是的寄存區(qū)的緩沖大小。如果取負(fù)值,寄存區(qū)的緩沖大小則為系統(tǒng)默認(rèn)。
打開文件的不同方式:
模式描述
r以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是默認(rèn)模式。
rb以二進(jìn)制格式打開一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開頭。這是默認(rèn)模式。
r+打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。
rb+以二進(jìn)制格式打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。
w打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
w+打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb+以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
ab以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
a+打開一個(gè)文件用于讀寫。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。
ab+以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。
文件操作圖解:
模式
r
r+
w
w+
a
a+
讀
+
+
+
+
寫
+
+
+
+
+
創(chuàng)建
+
+
+
+
覆蓋
+
+
指針在開始
+
+
+
+
指針在結(jié)尾
+
+
- (2) file文件對(duì)象的屬性和方法
一個(gè)被打開的file文件,可以通過操作得到有關(guān)該文件的各種信息
屬性描述
file.closed返回true如果文件已被關(guān)閉,否則返回false。
file.mode返回被打開文件的訪問模式。
file.name返回文件的名稱。
f=open(r"filename","rb")
print(f.name) filename
print(f.closed) False
print(f.mode) rb
f.close()
print(f.name) filename
print(f.closed) True
print(f.mode) rb
close()方法
File 對(duì)象的 close()方法刷新緩沖區(qū)里任何還沒寫入的信息,并關(guān)閉該文件,這之后便不能再進(jìn)行寫入
read()方法
按打開方式是 字節(jié)還是字符
read(self, size=-1)
按格式讀長(zhǎng)度
file.read(2)
r--->2 字符
rb--->2 字節(jié)
seek()方法
后面是字節(jié),指定指針位置
seek(self, *args, **kwargs)
file.seek(2)----字節(jié)數(shù)----gbk--2個(gè)字節(jié)一個(gè)漢字
file.seek(3)----字節(jié)數(shù)----utf-8--3個(gè)字節(jié)一個(gè)漢字
file.tell()
查看當(dāng)前指針位置
seek(self, *args, **kwargs)
position = fo.tell();
print("當(dāng)前文件位置 : ", position)
file.writable()
True if file was opened in a write mode.
file.readable()
True if file was opened in a read mode.
file.flush()
從內(nèi)存強(qiáng)刷到硬盤
一般文件操作沒有完成到硬盤上的時(shí)候,數(shù)據(jù)不會(huì)存在
file.readline()
讀一行
readline() --------- 每行
for line in file:
print(line.read()) ========>>>>> # python 2 xreadlines()
file.readlines()
返回一個(gè)列表
file.truncate()
截取 指針位置前面的數(shù)據(jù)
- (3) 上下文管理 with open(..) as f:
with open(r'filename',mode='rb') as file:
file.read()
例子
讀寫操作 字節(jié),字符打開
1
path=r'filename'
file=open(path,encoding='utf-8',mode='r')
a=file.read()
print(a)
file.close()
2
path=r'filename'
file=open(path,'rb')
a=file.read().decode('gbk')
print(a)
file.close()
3
path=r'filename'
file=open(path,mode='w',encoding='utf-8')
file.write('adasdad')
file.close()
4
path=r'filename'
file=open(path,'wb')
file.write('哈哈哈'.encode('utf-8'))
file.close()
- (4) 文件的修改與重命名
文件修改,重命名需要借助 os模塊的 remove()和rename()
原文件,讀取內(nèi)容 — 修改 — 重新新建一個(gè)文件,接收 — 刪除原文件
os模塊提供執(zhí)行文件處理操作的方法,比如重命名和刪除文件
rename(current_file_name, new_file_name)
remove(file_name)
例子
file2=open(r'f2','w',encoding='utf-8')
with open(r'f1','r',encoding='utf-8') as file1:
for line in file1:
mylist=line.split('|')
mylist[0]=mylist[0][0:2]
mystr='|'.join(mylist)
file2.write(mystr)
file2.close()
import os
os.remove(r'f1')
os.rename(r'f1',r'f2')
3 目錄操作方法 os模塊
mkdir()方法
當(dāng)前目錄下創(chuàng)建一個(gè)新目錄
import os
# 創(chuàng)建目錄test
os.mkdir("test")
chdir()方法
切換目錄
import os
os.mkdir("d:test")
getcwd()方法
顯示當(dāng)前的工作目錄
import os
print(os.getcwd())
rmdir()方法
刪除目錄,刪除之前,它的所有內(nèi)容應(yīng)該先被清除
import os
os.rmdir("d:text")
4 常見的文件目錄操作方法 附錄:
OS 對(duì)象方法:
提供了處理文件及目錄的一系列方法
序號(hào)方法及描述
8
9
10
11
12
13
14
16
17
18
19
20
22
23
24
26
27
28
29
30
31
32
33
34
35
36
37os.mknod(filename[, mode=0600, device])
創(chuàng)建一個(gè)名為filename文件系統(tǒng)節(jié)點(diǎn)(文件,設(shè)備特別文件或者命名pipe)。
38
39
41
43
45
47
48
49
50
52
54
55
57
58
59
61
63
file句柄 對(duì)象方法:
序號(hào)方法及描述
1關(guān)閉文件。關(guān)閉后文件不能再進(jìn)行讀寫操作。
2刷新文件內(nèi)部緩沖,直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)立刻寫入文件, 而不是被動(dòng)的等待輸出緩沖區(qū)寫入。
3返回一個(gè)整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。
4如果文件連接到一個(gè)終端設(shè)備返回 True,否則返回 False。
6從文件讀取指定的字節(jié)數(shù),如果未給定或?yàn)樨?fù)則讀取所有。
8讀取所有行并返回列表,若給定sizeint>0,則是設(shè)置一次讀多少字節(jié),這是為了減輕讀取壓力。
10
11截取文件,截取的字節(jié)通過size指定,默認(rèn)為當(dāng)前文件位置。
12將字符串寫入文件,沒有返回值。
13向文件寫入一個(gè)序列字符串列表,如果需要換行則要自己加入每行的換行符。
總結(jié)
以上是生活随笔為你收集整理的python文件输入符_python文件IO与file操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: while read line 用法详细
- 下一篇: python实战===如何优雅的打飞机