1. 程式人生 > >Python3從零學習(五)

Python3從零學習(五)

# -*- coding:utf-8 -*-
#輸出與輸入

# Python兩種輸出值的方式: 表示式語句和 print() 函式。
# 第三種方式是使用檔案物件的 write() 方法,標準輸出檔案可以用 sys.stdout 引用。
# 如果你希望輸出的形式更加多樣,可以使用 str.format() 函式來格式化輸出值。
# 如果你希望將輸出的值轉成字串,可以使用 repr() 或 str() 函式來實現。
# str(): 函式返回一個使用者易讀的表達形式。
# repr(): 產生一個直譯器易讀的表達形式。

s = 'Hello World'
str(s)


repr(s)


#format

print("{}--{}".format(1,2))

print("{0}{1}".format(1,2))

print("{name}".format(name=999))

#讀和寫檔案open(name,mode)
# name:name 變數是一個包含了你要訪問的檔名稱的字串值。
# mode:mode決定了開啟檔案的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個引數是非強制的,預設檔案訪問模式為只讀(r)。
# 不同模式開啟檔案的完全列表:
# 模式	    描述
# r	    以只讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
# rb	以二進位制格式開啟一個檔案用於只讀。檔案指標將會放在檔案的開頭。這是預設模式。
# r+	開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
# rb+	以二進位制格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
# w	    開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
# wb	以二進位制格式開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
# w+	開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
# wb+	以二進位制格式開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
# a	    開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
# ab	以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
# a+	開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。
# ab+	以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

#寫
f = open("text.txt","w")
f.write("Python是一個很好的語言\n我說的是真的")
f.close()
#讀
f = open("text.txt","r")
str = f.read()
print(str)

f.close()

#readline()讀取一行
#readlines()讀取全部行,返回list


f = open("text.txt","r")
str = f.tell()
print(str)

import pickle

data1 = {'a':[1,2,3,],
         'b':('String','Hello'),
         'c':None}
lis = [5,6,7]
lis.append(lis)

outp = open('data.pkl','wb')

pickle.dump(data1,outp)

pickle.dump(lis,outp)

outp.close()

import pprint

pkl = open('data.pkl','rb')
da = pickle.load(pkl)
pprint.pprint(da)
pkl.close()

#Python File方法
# file.close()
# 關閉檔案。關閉後文件不能再進行讀寫操作。

# file.flush()
# 重新整理檔案內部緩衝,直接把內部緩衝區的資料立刻寫入檔案, 而不是被動的等待輸出緩衝區寫入。

# file.fileno()
# 返回一個整型的檔案描述符(file descriptor FD 整型), 可以用在如os模組的read方法等一些底層操作上。

# file.isatty()
# 如果檔案連線到一個終端裝置返回 True,否則返回 False。

# file.next()
# 返回檔案下一行。

# file.read([size])
# 從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。

# file.readline([size])
# 讀取整行,包括 "\n" 字元。

# file.readlines([sizehint])
# 讀取所有行並返回列表,若給定sizeint>0,返回總和大約為sizeint位元組的行, 實際讀取值可能比sizhint較大, 因為需要填充緩衝區。

# file.seek(offset[, whence])
# 設定檔案當前位置

# file.tell()
# 返回檔案當前位置。

# file.truncate([size])
# 擷取檔案,擷取的位元組通過size指定,預設為當前檔案位置。

# file.write(str)
# 將字串寫入檔案,沒有返回值。

# file.writelines(sequence)
# 向檔案寫入一個序列字串列表,如果需要換行則要自己加入每行的換行符。

#Python OS檔案/目錄方法

# os.access(path, mode)
# 檢驗許可權模式

# os.chdir(path)
# 改變當前工作目錄

# os.chflags(path, flags)
# 設定路徑的標記為數字標記。

# os.chmod(path, mode)
# 更改許可權

# os.chown(path, uid, gid)
# 更改檔案所有者

# os.chroot(path)
# 改變當前程序的根目錄

# os.close(fd)
# 關閉檔案描述符 fd

# os.closerange(fd_low, fd_high)
# 關閉所有檔案描述符,從 fd_low (包含) 到 fd_high (不包含), 錯誤會忽略

# os.dup(fd)
# 複製檔案描述符 fd

# os.dup2(fd, fd2)
# 將一個檔案描述符 fd 複製到另一個 fd2

# os.fchdir(fd)
# 通過檔案描述符改變當前工作目錄

# os.fchmod(fd, mode)
# 改變一個檔案的訪問許可權,該檔案由引數fd指定,引數mode是Unix下的檔案訪問許可權。

# os.fchown(fd, uid, gid)
# 修改一個檔案的所有權,這個函式修改一個檔案的使用者ID和使用者組ID,該檔案由檔案描述符fd指定。

# os.fdatasync(fd)
# 強制將檔案寫入磁碟,該檔案由檔案描述符fd指定,但是不強制更新檔案的狀態資訊。

# os.fdopen(fd[, mode[, bufsize]])
# 通過檔案描述符 fd 建立一個檔案物件,並返回這個檔案物件

# os.fpathconf(fd, name)
# 返回一個開啟的檔案的系統配置資訊。name為檢索的系統配置的值,它也許是一個定義系統值的字串,這些名字在很多標準中指定(POSIX.1, Unix 95, Unix 98, 和其它)。

# os.fstat(fd)
# 返回檔案描述符fd的狀態,像stat()。

# os.fstatvfs(fd)
# 返回包含檔案描述符fd的檔案的檔案系統的資訊,像 statvfs()

# os.fsync(fd)
# 強制將檔案描述符為fd的檔案寫入硬碟。

# os.ftruncate(fd, length)
# 裁剪檔案描述符fd對應的檔案, 所以它最大不能超過檔案大小。

# os.getcwd()
# 返回當前工作目錄

# os.getcwdu()
# 返回一個當前工作目錄的Unicode物件

# os.isatty(fd)
# 如果檔案描述符fd是開啟的,同時與tty(-like)裝置相連,則返回true, 否則False。

# os.lchflags(path, flags)
# 設定路徑的標記為數字標記,類似 chflags(),但是沒有軟連結

# os.lchmod(path, mode)
# 修改連線檔案許可權

# os.lchown(path, uid, gid)
# 更改檔案所有者,類似 chown,但是不追蹤連結。

# os.link(src, dst)
# 建立硬連結,名為引數 dst,指向引數 src

# os.listdir(path)
# 返回path指定的資料夾包含的檔案或資料夾的名字的列表。

# os.lseek(fd, pos, how)
# 設定檔案描述符 fd當前位置為pos, how方式修改: SEEK_SET 或者 0 設定從檔案開始的計算的pos; SEEK_CUR或者 1 則從當前位置計算; os.SEEK_END或者2則從檔案尾部開始. 在unix,Windows中有效

# os.lstat(path)
# 像stat(),但是沒有軟連結

# os.major(device)
# 從原始的裝置號中提取裝置major號碼 (使用stat中的st_dev或者st_rdev field)。

# os.makedev(major, minor)
# 以major和minor裝置號組成一個原始裝置號

# os.makedirs(path[, mode])
# 遞迴資料夾建立函式。像mkdir(), 但建立的所有intermediate-level資料夾需要包含子資料夾。

# os.minor(device)
# 從原始的裝置號中提取裝置minor號碼 (使用stat中的st_dev或者st_rdev field )。

# os.mkdir(path[, mode])
# 以數字mode的mode建立一個名為path的資料夾.預設的 mode 是 0777 (八進位制)。

# os.mkfifo(path[, mode])
# 建立命名管道,mode 為數字,預設為 0666 (八進位制)

# os.mknod(filename[, mode=0600, device])
# 建立一個名為filename檔案系統節點(檔案,裝置特別檔案或者命名pipe)。

# os.open(file, flags[, mode])
# 開啟一個檔案,並且設定需要的開啟選項,mode引數是可選的

# os.openpty()
# 開啟一個新的偽終端對。返回 pty 和 tty的檔案描述符。

# os.pathconf(path, name)
# 返回相關檔案的系統配置資訊。

# os.pipe()
# 建立一個管道. 返回一對檔案描述符(r, w) 分別為讀和寫

# os.popen(command[, mode[, bufsize]])
# 從一個 command 開啟一個管道

# os.read(fd, n)
# 從檔案描述符 fd 中讀取最多 n 個位元組,返回包含讀取位元組的字串,檔案描述符 fd對應檔案已達到結尾, 返回一個空字串。

# os.readlink(path)
# 返回軟連結所指向的檔案

# os.remove(path)
# 刪除路徑為path的檔案。如果path 是一個資料夾,將丟擲OSError; 檢視下面的rmdir()刪除一個 directory。

# os.removedirs(path)
# 遞迴刪除目錄。

# os.rename(src, dst)
# 重新命名檔案或目錄,從 src 到 dst

# os.renames(old, new)
# 遞迴地對目錄進行更名,也可以對檔案進行更名。

# os.rmdir(path)
# 刪除path指定的空目錄,如果目錄非空,則丟擲一個OSError異常。
# os.stat(path)
#
# 獲取path指定的路徑的資訊,功能等同於C API中的stat()系統呼叫。
# os.stat_float_times([newvalue])
# 決定stat_result是否以float物件顯示時間戳
# os.statvfs(path)
# 獲取指定路徑的檔案系統統計資訊
# os.symlink(src, dst)
# 建立一個軟連結
# os.tcgetpgrp(fd)
# 返回與終端fd(一個由os.open()返回的開啟的檔案描述符)關聯的程序組

# os.tcsetpgrp(fd, pg)

# 設定與終端fd(一個由os.open()返回的開啟的檔案描述符)關聯的程序組為pg。

# os.tempnam([dir[, prefix]])
# 返回唯一的路徑名用於建立臨時檔案。

# os.tmpfile()
# 返回一個開啟的模式為(w+b)的檔案物件 .這檔案物件沒有資料夾入口,沒有檔案描述符,將會自動刪除。

# os.tmpnam()
# 為建立一個臨時檔案返回一個唯一的路徑

# os.ttyname(fd)
# 返回一個字串,它表示與檔案描述符fd 關聯的終端裝置。如果fd 沒有與終端裝置關聯,則引發一個異常。

# os.unlink(path)
# 刪除檔案路徑

# os.utime(path, times)
# 返回指定的path檔案的訪問和修改的時間。

# os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
# 輸出在資料夾中的檔名通過在樹中游走,向上或者向下。

# os.write(fd, str)
# 寫入字串到檔案描述符 fd中. 返回實際寫入的字串長度


#Python類的專有方法
# __init__ : 建構函式,在生成物件時呼叫
# __del__ : 解構函式,釋放物件時使用
# __repr__ : 列印,轉換
# __setitem__ : 按照索引賦值
# __getitem__: 按照索引獲取值
# __len__: 獲得長度
# __cmp__: 比較運算
# __call__: 函式呼叫
# __add__: 加運算
# __sub__: 減運算
# __mul__: 乘運算
# __div__: 除運算
# __mod__: 求餘運算
# __pow__: 稱方