Python进阶之路一
輸入和輸出
輸出
str(): 函數(shù)返回一個(gè)用戶(hù)易讀的表達(dá)形式。
repr(): 產(chǎn)生一個(gè)解釋器易讀的表達(dá)形式。
Python兩種輸出值的方式: 表達(dá)式語(yǔ)句和 print() 函數(shù)。 第三種方式是使用文件對(duì)象的 write() 方法,標(biāo)準(zhǔn)輸出文件可以用 sys.stdout 引用。 如果你希望輸出的形式更加多樣,可以使用 str.format() 函數(shù)來(lái)格式化輸出值。
>>> s = 'Hello, Runoob'
>>> str(s)
'Hello, Runoob'
>>> repr(s)
"'Hello, Runoob'"
>>> str(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'x 的值為: ' + repr(x) + ', y 的值為:' + repr(y) + '...'
>>> print(s)
x 的值為: 32.5, y 的值為:40000...
>>> # repr() 函數(shù)可以轉(zhuǎn)義字符串中的特殊字符
... hello = 'hello, runoob
'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, runoob
'
>>> # repr() 的參數(shù)可以是 Python 的任何對(duì)象
... repr((x, y, ('Google', 'Runoob')))
"(32.5, 40000, ('Google', 'Runoob'))"
這里有兩種方式輸出一個(gè)平方與立方的表:
>>> for x in range(1, 11):
... print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
... # 注意前一行 'end' 的使用
... print(repr(x*x*x).rjust(4))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
>>> for x in range(1, 11):
... print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
另一個(gè)方法 zfill(), 它會(huì)在數(shù)字的左邊填充 0,如下所示:
>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'
str.format() 的基本使用如下:
>>> print('{0} 和 {1}'.format('Google', 'Runoob'))
Google 和 Runoob
>>> print('{1} 和 {0}'.format('Google', 'Runoob'))
Runoob 和 Google
>>> print('站點(diǎn)列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob', other='Taobao'))
站點(diǎn)列表 Google, Runoob, 和 Taobao。
輸入
Python提供了 input() 內(nèi)置函數(shù)從標(biāo)準(zhǔn)輸入讀入一行文本,默認(rèn)的標(biāo)準(zhǔn)輸入是鍵盤(pán)。 input 可以接收一個(gè)Python表達(dá)式作為輸入,并將運(yùn)算結(jié)果返回。
str = input("請(qǐng)輸入:");
print ("你輸入的內(nèi)容是: ", str)
讀和寫(xiě)文件
open(filename, mode)
//filename:包含了你要訪問(wèn)的文件名稱(chēng)的字符串值。
//mode:決定了打開(kāi)文件的模式:只讀,寫(xiě)入,追加等。所有可取值見(jiàn)如下的完全列表。這個(gè)參數(shù)是非強(qiáng)制的,默認(rèn)文件訪問(wèn)模式為只讀(r)。
| 模式 | 描述 |
|---|---|
| r | 以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。 |
| rb | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。 |
| r+ | 打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。 |
| rb+ | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。 |
| w | 打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
| wb | 以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
| w+ | 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
| wb+ | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
| a | 打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。 |
| ab | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。 |
| a+ | 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。 |
| ab+ | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。 |
文件對(duì)象的方法
| 方法 | 描述 |
|---|---|
| f.read() | 為了讀取一個(gè)文件的內(nèi)容,調(diào)用 f.read(size), 這將讀取一定數(shù)目的數(shù)據(jù), 然后作為字符串或字節(jié)對(duì)象返回。 size 是一個(gè)可選的數(shù)字類(lèi)型的參數(shù)。 當(dāng) size 被忽略了或者為負(fù), 那么該文件的所有內(nèi)容都將被讀取并且返回。 |
| f.readline() | f.readline() 會(huì)從文件中讀取單獨(dú)的一行。換行符為 ' '。f.readline() 如果返回一個(gè)空字符串, 說(shuō)明已經(jīng)已經(jīng)讀取到最后一行。 |
| f.readlines() | f.readlines() 將返回該文件中包含的所有行。 |
| f.write() | f.write(string) 將 string 寫(xiě)入到文件中, 然后返回寫(xiě)入的字符數(shù)。 |
| f.tell() | f.tell() 返回文件對(duì)象當(dāng)前所處的位置, 它是從文件開(kāi)頭開(kāi)始算起的字節(jié)數(shù)。 |
| f.seek() | 如果要改變文件當(dāng)前的位置, 可以使用 f.seek(offset, from_what) 函數(shù)。 /td> |
| f.close() | 在文本文件中 (那些打開(kāi)文件的模式下沒(méi)有 b 的), 只會(huì)相對(duì)于文件起始位置進(jìn)行定位。 |
//當(dāng)處理一個(gè)文件對(duì)象時(shí), 使用 with 關(guān)鍵字是非常好的方式。在結(jié)束后, 它會(huì)幫你正確的關(guān)閉文件。 而且寫(xiě)起來(lái)也比 try - finally 語(yǔ)句塊要簡(jiǎn)短:
>>> with open('/tmp/foo.txt', 'r') as f:
... read_data = f.read()
>>> f.closed
True
pickle模塊
python的pickle模塊實(shí)現(xiàn)了基本的數(shù)據(jù)序列和反序列化。 通過(guò)pickle模塊的序列化操作我們能夠?qū)⒊绦蛑羞\(yùn)行的對(duì)象信息保存到文件中去,永久存儲(chǔ)。 通過(guò)pickle模塊的反序列化操作,我們能夠從文件中創(chuàng)建上一次程序保存的對(duì)象。
//基本接口
pickle.dump(obj, file, [,protocol])
//有了 pickle 這個(gè)對(duì)象, 就能對(duì) file 以讀取的形式打開(kāi):
x = pickle.load(file)
實(shí)例1
import pickle
# 使用pickle模塊將數(shù)據(jù)對(duì)象保存到文件
data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}
selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)
output = open('data.pkl', 'wb')
# Pickle dictionary using protocol 0.
pickle.dump(data1, output)
# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)
output.close()
實(shí)例2
import pprint, pickle
#使用pickle模塊從文件中重構(gòu)python對(duì)象
pkl_file = open('data.pkl', 'rb')
data1 = pickle.load(pkl_file)
pprint.pprint(data1)
data2 = pickle.load(pkl_file)
pprint.pprint(data2)
pkl_file.close()
File(文件) 方法
open方法
注意:使用 open() 方法一定要保證關(guān)閉文件對(duì)象,即調(diào)用 close() 方法。 open() 函數(shù)常用形式是接收兩個(gè)參數(shù):文件名(file)和模式(mode)。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數(shù)說(shuō)明
file: 必需,文件路徑(相對(duì)或者絕對(duì)路徑)。
mode: 可選,文件打開(kāi)模式
buffering: 設(shè)置緩沖
encoding: 一般使用utf8
errors: 報(bào)錯(cuò)級(jí)別
newline: 區(qū)分換行符
closefd: 傳入的file參數(shù)類(lèi)型
opener:
| 方法 | 描述 |
|---|---|
| file.close() | 關(guān)閉文件。關(guān)閉后文件不能再進(jìn)行讀寫(xiě)操作。 |
| file.flush() | 刷新文件內(nèi)部緩沖,直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)立刻寫(xiě)入文件, 而不是被動(dòng)的等待輸出緩沖區(qū)寫(xiě)入。 |
| file.fileno() | 返回一個(gè)整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。 |
| file.isatty() | 如果文件連接到一個(gè)終端設(shè)備返回 True,否則返回 False。 |
| file.read([size]) | 從文件讀取指定的字節(jié)數(shù),如果未給定或?yàn)樨?fù)則讀取所有。 |
| file.readline([size]) | 讀取整行,包括 " " 字符。 |
| file.readlines([sizeint]) | 讀取所有行并返回列表,若給定sizeint>0,返回總和大約為sizeint字節(jié)的行, 實(shí)際讀取值可能比 sizeint 較大, 因?yàn)樾枰畛渚彌_區(qū)。 |
| file.seek(offset[, whence]) | 移動(dòng)文件讀取指針到指定位置 |
| file.tell() | 返回文件當(dāng)前位置。 |
| file.truncate([size]) | 從文件的首行首字符開(kāi)始截?cái)啵財(cái)辔募?size 個(gè)字符,無(wú) size 表示從當(dāng)前位置截?cái)啵唤財(cái)嘀蠛竺娴乃凶址粍h除,其中 Widnows 系統(tǒng)下的換行代表2個(gè)字符大小。 |
| file.write(str) | 將字符串寫(xiě)入文件,返回的是寫(xiě)入的字符長(zhǎng)度。 |
| file.writelines(sequence) | 向文件寫(xiě)入一個(gè)序列字符串列表,如果需要換行則要自己加入每行的換行符。 |
OS 文件/目錄方法
| 方法 | 描述 |
|---|---|
| os.access(path, mode) | 檢驗(yàn)權(quán)限模式 |
| os.chdir(path) | 改變當(dāng)前工作目錄 |
| os.chflags(path, flags) | 設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記。 |
| os.chmod(path, mode) | 更改權(quán)限 |
| os.chown(path, uid, gid) | 更改文件所有者 |
| os.chroot(path) | 改變當(dāng)前進(jìn)程的根目錄 |
| os.close(fd) | 關(guān)閉文件描述符 fd |
| os.closerange(fd_low, fd_high) | 關(guān)閉所有文件描述符,從 fd_low (包含) 到 fd_high (不包含), 錯(cuò)誤會(huì)忽略 |
| os.dup(fd) | 復(fù)制文件描述符 fd |
| os.dup2(fd, fd2) | 將一個(gè)文件描述符 fd 復(fù)制到另一個(gè) fd2 |
| os.fchdir(fd) | 通過(guò)文件描述符改變當(dāng)前工作目錄 |
| os.fchmod(fd, mode) | 改變一個(gè)文件的訪問(wèn)權(quán)限,該文件由參數(shù)fd指定,參數(shù)mode是Unix下的文件訪問(wèn)權(quán)限。 |
| os.fchown(fd, uid, gid) | 修改一個(gè)文件的所有權(quán),這個(gè)函數(shù)修改一個(gè)文件的用戶(hù)ID和用戶(hù)組ID,該文件由文件描述符fd指定。 |
| os.fdatasync(fd) | 強(qiáng)制將文件寫(xiě)入磁盤(pán),該文件由文件描述符fd指定,但是不強(qiáng)制更新文件的狀態(tài)信息。 |
| os.fdopen(fd[, mode[, bufsize]]) | 通過(guò)文件描述符 fd 創(chuàng)建一個(gè)文件對(duì)象,并返回這個(gè)文件對(duì)象 |
| os.fpathconf(fd, name) | 返回一個(gè)打開(kāi)的文件的系統(tǒng)配置信息。name為檢索的系統(tǒng)配置的值,它也許是一個(gè)定義系統(tǒng)值的字符串,這些名字在很多標(biāo)準(zhǔn)中指定(POSIX.1, Unix 95, Unix 98, 和其它)。 |
| os.fstat(fd) | 返回文件描述符fd的狀態(tài),像stat()。 |
| os.fstatvfs(fd) | 返回包含文件描述符fd的文件的文件系統(tǒng)的信息,Python 3.3 相等于 statvfs()。 |
| os.fsync(fd) | 返回包含文件描述符fd的文件的文件系統(tǒng)的信息,Python 3.3 相等于 statvfs()。 |
| os.fsync(fd) | 強(qiáng)制將文件描述符為fd的文件寫(xiě)入硬盤(pán)。 |
| os.ftruncate(fd, length) | 裁剪文件描述符fd對(duì)應(yīng)的文件, 所以它最大不能超過(guò)文件大小。 |
| os.getcwd() | 返回當(dāng)前工作目錄 |
| os.getcwdu() | 返回一個(gè)當(dāng)前工作目錄的Unicode對(duì)象 |
| os.isatty(fd) | 如果文件描述符fd是打開(kāi)的,同時(shí)與tty(-like)設(shè)備相連,則返回true, 否則False。 |
| os.lchflags(path, flags) | 設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記,類(lèi)似 chflags(),但是沒(méi)有軟鏈接 |
| os.lchmod(path, mode) | 修改連接文件權(quán)限 |
| os.lchown(path, uid, gid) | 更改文件所有者,類(lèi)似 chown,但是不追蹤鏈接。 |
| os.link(src, dst) | 創(chuàng)建硬鏈接,名為參數(shù) dst,指向參數(shù) src |
| os.listdir(path) | 返回path指定的文件夾包含的文件或文件夾的名字的列表。 |
| os.lseek(fd, pos, how) | 設(shè)置文件描述符 fd當(dāng)前位置為pos, how方式修改: SEEK_SET 或者 0 設(shè)置從文件開(kāi)始的計(jì)算的pos; SEEK_CUR或者 1 則從當(dāng)前位置計(jì)算; os.SEEK_END或者2則從文件尾部開(kāi)始. 在unix,Windows中有效 |
| os.lstat(path) | 像stat(),但是沒(méi)有軟鏈接 |
| os.major(device) | 從原始的設(shè)備號(hào)中提取設(shè)備major號(hào)碼 (使用stat中的st_dev或者st_rdev field)。 |
| os.makedev(major, minor) | 以major和minor設(shè)備號(hào)組成一個(gè)原始設(shè)備號(hào) |
| os.makedirs(path[, mode]) | 遞歸文件夾創(chuàng)建函數(shù)。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。 |
| os.minor(device) | 從原始的設(shè)備號(hào)中提取設(shè)備minor號(hào)碼 (使用stat中的st_dev或者st_rdev field )。 |
| os.mkdir(path[, mode]) | 以數(shù)字mode的mode創(chuàng)建一個(gè)名為path的文件夾.默認(rèn)的 mode 是 0777 (八進(jìn)制)。 |
| os.mkfifo(path[, mode]) | 創(chuàng)建命名管道,mode 為數(shù)字,默認(rèn)為 0666 (八進(jìn)制) |
| os.mknod(filename[, mode=0600, device]) | 創(chuàng)建一個(gè)名為filename文件系統(tǒng)節(jié)點(diǎn)(文件,設(shè)備特別文件或者命名pipe)。 |
| os.open(file, flags[, mode]) | 打開(kāi)一個(gè)文件,并且設(shè)置需要的打開(kāi)選項(xiàng),mode參數(shù)是可選的 |
| os.openpty() | 打開(kāi)一個(gè)新的偽終端對(duì)。返回 pty 和 tty的文件描述符。 |
| os.pathconf(path, name) | 返回相關(guān)文件的系統(tǒng)配置信息。 |
| os.pipe() | 創(chuàng)建一個(gè)管道. 返回一對(duì)文件描述符(r, w) 分別為讀和寫(xiě) |
| os.popen(command[, mode[, bufsize]]) | 從一個(gè) command 打開(kāi)一個(gè)管道 |
| os.read(fd, n) | 從文件描述符 fd 中讀取最多 n 個(gè)字節(jié),返回包含讀取字節(jié)的字符串,文件描述符 fd對(duì)應(yīng)文件已達(dá)到結(jié)尾, 返回一個(gè)空字符串。 |
| os.readlink(path) | 返回軟鏈接所指向的文件 |
| os.remove(path) | 刪除路徑為path的文件。如果path 是一個(gè)文件夾,將拋出OSError; 查看下面的rmdir()刪除一個(gè) directory。 |
| os.removedirs(path) | 遞歸刪除目錄。 |
| os.rename(src, dst) | 重命名文件或目錄,從 src 到 dst |
| os.renames(old, new) | 遞歸地對(duì)目錄進(jìn)行更名,也可以對(duì)文件進(jìn)行更名。 |
| os.rmdir(path) | 刪除path指定的空目錄,如果目錄非空,則拋出一個(gè)OSError異常。 |
| os.stat(path) | 獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調(diào)用。 |
| os.stat_float_times([newvalue]) | 決定stat_result是否以float對(duì)象顯示時(shí)間戳 |
| os.statvfs(path) | 獲取指定路徑的文件系統(tǒng)統(tǒng)計(jì)信息 |
| os.symlink(src, dst) | 創(chuàng)建一個(gè)軟鏈接 |
| os.tcgetpgrp(fd) | 返回與終端fd(一個(gè)由os.open()返回的打開(kāi)的文件描述符)關(guān)聯(lián)的進(jìn)程組 |
| os.tcsetpgrp(fd, pg) | 設(shè)置與終端fd(一個(gè)由os.open()返回的打開(kāi)的文件描述符)關(guān)聯(lián)的進(jìn)程組為pg。 |
| os.ttyname(fd) | 返回一個(gè)字符串,它表示與文件描述符fd 關(guān)聯(lián)的終端設(shè)備。如果fd 沒(méi)有與終端設(shè)備關(guān)聯(lián),則引發(fā)一個(gè)異常。 |
| os.unlink(path) | 刪除文件路徑 |
| os.utime(path, times) | 返回指定的path文件的訪問(wèn)和修改的時(shí)間。 |
| os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) | 輸出在文件夾中的文件名通過(guò)在樹(shù)中游走,向上或者向下。 |
| os.write(fd, str) | 寫(xiě)入字符串到文件描述符 fd中. 返回實(shí)際寫(xiě)入的字符串長(zhǎng)度 |
| os.path 模塊 | 獲取文件的屬性信息。 |
總結(jié)
以上是生活随笔為你收集整理的Python进阶之路一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 软件测试文档(终)
- 下一篇: 【go语言学习】VS安装go插件失败的解