日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python3 模块相关及输入输出模式

發布時間:2025/3/15 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3 模块相关及输入输出模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、模板簡介


? ? 如果我們通過python 解釋器來進行編程,在我們從解釋器退出后,我們定義的所有的方法和變量就都消失了。因此,我們可以通過模板的方法來解決這個問題。概述,把這些定義存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。 ? ??模塊是一個包含所有你定義的函數和變量的文件,其后綴名是.py。模塊可以被別的程序引入,以使用該模塊中的函數等功能。(python標準庫也是如此使用)
幾種引入模板的方法:
  • import module1[, module2 ?(一個模塊只會被導入一次,不管你執行了多少次import。這樣可以防止導入模塊被一遍又一遍地執行
  • from modname import name1 ? (引入那么name1庫的特定函數)
  • from modname import * ? (把一個模塊的所有內容全都導入到當前的命名空間)(不建議使用)

二 、模板探究


  • 模塊除了方法定義,還可以包括可執行的代碼。這些代碼一般用來初始化這個模塊。這些代碼只有在第一次被導入時才會被執行。每個模塊有各自獨立的符號表,在模塊內部為所有的函數當作全局符號表來使用 。
  • 模塊中導入其他模塊時候(使用 import 來導入),被導入的模塊的名稱將被放入當前操作的模塊的符號表中。或者通過使用 import?將指定的函數名導入到當前的操作模塊。例如:from fibo import fib, fib2 ?(注:這種導入的方法不會把被導入的模塊的名稱放在當前的字符表中)。此外,還有一種,一次性的把模塊中的所有(函數,變量) 名稱 (除了一些以單一下劃線( _ )開頭的名字)都導入到當前模塊的字符表 。不推薦使用。
  • __name__屬性
    • 一個模塊被另一個程序第一次引入時,其主程序將運行。如果我們想在模塊被引入時,模塊中的某一程序塊不執行,我們可以用__name__屬性來使該程序塊僅在該模塊自身運行時執行 。

#!/usr/bin/python3 # Filename: using_name.py if __name__ == '__main__': ???print('程序自身在運行') else: ???print('我來自另一模塊')
運行結果: $ python using_name.py 程序自身在運行
$ python >>> import using_name 我來自另一模塊>>>
總結:?每個模塊都有一個__name__屬性,當其值是'__main__'時,表明該模塊自身在運行,否則是被引入。
  • dir( ) 函數
    • 內置的函數 dir( ) 可以找到模塊內定義的所有名稱。以一個字符串列表的形式返回 。
    • 如果沒有給定參數,那么 dir() 函數會羅列出?當前模塊?中定義的所有名稱 。
  • 標準模塊
    • Python 本身帶著一些標準的模塊庫,有些模塊直接被構建在解析器里 。還有一些組件會根據不同的操作系統進行不同形式的配置,比如 winreg 這個模塊就只會提供給 Windows 系統。
    • 有一個特別的模塊 sys ,它內置在每一個 Python 解析器中。變量 sys.ps1 和 sys.ps2 定義了主提示符和副提示符所對應的字符串 。
    • 包是一種管理 Python 模塊命名空間的形式,采用"點模塊名稱"。比如一個模塊的名稱是 A.B, 那么他表示一個包 A中的子模塊 B 。
    • 在導入一個包的時候,Python 會根據 sys.path 中的目錄來尋找這個包中包含的子目錄。
    • 目錄只有包含一個叫做 __init__.py 的文件才會被認作是一個包,這個文件可以放一個空的 :file:__init__.py ?或者 ?包含一些初始化代碼或者為 __all__變量賦值 。
    • 導入方式
      • 可以每次只導入一個包里面的特定模塊,?import sound.effects.echo , 這將會導入子模塊:sound.effects.echo。 但使用時需要全名去訪問(sound.effects.echo.echofilter)。
      • 另一種導入子模塊的方法是:?from sound.effects import echo ?這樣可以冗長的前綴 。
      • 之外,一種變化就是直接導入一個函數或者變量 。from sound.effects.echo import echofilter
      • 注:import語法會首先把item當作一個包定義的名稱,如果沒找到,再試圖按照一個模塊去導入。如果還沒找到,exc:ImportError 異常會被拋出 。
      • 當使用使用 from sound.effects import *,由導入語句確定:如果包定義文件 __init__.py 存在一個叫做 __all__ 的列表變量,那么在使用 from package import * 的時候就把這個列表中的所有名字作為包內容導入。

三 、格式輸入與輸出


? ? 1、簡述 ?? ??? ???Python兩種輸出值的方式: 表達式語句和 print() 函數。第三種方式是使用文件對象的 write( ) 方法,標準輸出文件可以用 sys.stdout 引用 。對于格式化輸出,需要用到str.format( )函數,若需要將輸出值準換成字符串,可用repr( )和str( )來實現。
  • str():?函數返回一個用戶易讀的表達形式。
  • repr():?產生一個解釋器易讀的表達形式。
  • 字符串對象的 rjust() 方法, 它可以將字符串靠右, 并在左邊填充空格。
  • 其他類似的有, ?ljust( ) 和 center( )它們僅僅返回新的字符串。
  • zfill( ), 它會在數字的左邊填充 0。
  • str.format() 基本用法? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??print('{ ?}網址: "{ ?} !"'.format('Google', 'www.google.com')) ?括號及其里面的字符 (稱作格式化字段) 將會被 format() 中的參數替換。
  • 括號中的數字用于指向傳入對象在 format() 中的位置。

>>> print('{0} 和 {1}'.format('Google', 'baidu')) Google 和 baidu >>> print('{1} 和 {0}'.format('Google', 'baidu')) baidu 和 Google
  • 如果在 format() 中使用了關鍵字參數, 那么它們的值會指向使用該名字的參數。

print('{name}網址: {site}'.format(name='菜鳥教程', site='www.baidu.com';))
  • '!a' (使用 ascii()), '!s' (使用 str()) 和 '!r' (使用 repr()) 可以用于在格式化某個值之前對其進行轉化 。

print('常量 PI 的值近似為: {!r}。'.format(math.pi))
  • 可選項 ' : ' 和格式標識符可以跟著字段名。例如,將 Pi 保留到小數點后三位 。
>>> import math >>> print('常量 PI 的值近似為 {0:.3f}。'.format(math.pi))
常量 PI 的值近似為 3.142。
  • 在 ':' 后傳入一個整數, 可以保證該域至少有這么多的寬度。??print('{0:10} ==> {1:10d}'.format(name, number))
  • 舊式字符串格式化
    • % 操作符也可以實現字符串格式化。 它將左邊的參數作為類似 sprintf() 式的格式化字符串, 而將右邊的代入, 然后返回格式化后的字符串 。

>>> import math >>> print('常量 PI 的值近似為:%5.3f。' % math.pi)
常量 PI 的值近似為:3.142。

四 、文 ?件 ?相 ?關


1、讀取鍵盤輸入 ?? ??? ?Python提供了 input() 置函數從標準輸入讀入一行文本,默認的標準輸入是鍵盤。 ?str = input("請輸入:") ;
2、讀寫文件 ? ? ? ?open() 將會返回一個 file 對象 。格式如 :?open(filename, mode)
  • ilename:filename 變量是一個包含了你要訪問的文件名稱的字符串值。
  • mode:mode決定了打開文件的模式:只讀,寫入,追加等。這個參數是非強制的,默認文件訪問模式為只讀(r)。

不同模式打開文件的匯總列表




  • 文件對象通過open函數創建
  • f.read() ?讀取一個文件的內容,調用 f.read(size), 這將讀取一定數目的數據, 然后作為字符串或字節對象返回。size 是一個可選的數字類型的參數。 當 size 被忽略了或者為負, 那么該文件的所有內容都將被讀取并且返回。
  • f.readline( ) ??f.readline() 會從文件中讀取單獨的一行。換行符為 '\n'。f.readline() 如果返回一個空字符串, 說明已經已經讀取到最后一行。
  • f.readlines( ) ??f.readlines() 將返回該文件中包含的所有行。如果設置可選參數 sizehint, 則讀取指定長度的字節, 并且將這些字節按行分割。
  • f.write( ) ??f.write(string) 將 string 寫入到文件中, 然后返回寫入的字符數。
  • f.tell( ) ? ??f.tell() 返回文件對象當前所處的位置, 它是從文件開頭開始算起的字節數?
  • f.seek( ) ? ??如果要改變文件當前的位置, 可以使用 f.seek(offset, from_what ) 函數。from_what 的值, 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示文件的結尾。例如:
    • seek(x,0) : 從起始位置即文件首行首字符開始移動 x 個字符
    • seek(x,1) : 表示從當前位置往后移動x個字符
    • seek(-x,2):表示從文件的結尾往前移動x個字符
    • 注: ?rom_what 值為默認為0,即文件開頭 。
  • ??f.close( ) ? ?在文本文件中 (那些打開文件的模式下沒有 b 的), 只會相對于文件起始位置進行定位 。當你處理完一個文件后, 調用 f.close() 來關閉文件并釋放系統的資源,如果嘗試再調用該文件,則會拋出異常。?

五 、pickle 模塊


?? ??? ?python的pickle模塊實現了基本的數據序列和反序列化 。通過pickle模塊的序列化操作我們能夠將程序中運行的對象信息保存到文件中去,永久存儲。通過pickle模塊的反序列化操作,我們能夠從文件中創建上一次程序保存的對象。?? ? ? ? 基 ?本 ?接 ?口 : pickle.dump( obj , file , [ ,protocol ]) ?這相當于創建對象,有了這個pickle 對 象,就能夠對 file 以讀取的方式進行打開 : ??x = pickle.load(?file?) 。 ?? ?從 file 中讀取一個字符串,并將它重構為原來的python對象 。
demo如下:
#!/usr/bin/python3 import pickle
# 使用pickle模塊將數據對象保存到文件 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()
# ! /usr/bin/python3 import pprint, pickle
#使用pickle模塊從文件中重構python對象 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()


六 、文件相關的(常用)方法


  • 1??file.close()??關閉文件。關閉后文件不能再進行讀寫操作。
  • 2??file.flush()??刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件, 而不是被動的等待輸出緩沖區寫入。
  • 3??file.fileno()??返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。
  • 4??file.isatty()??如果文件連接到一個終端設備返回 True,否則返回 False。
  • 5??file.next()????返回文件下一行。
  • 6??file.read([size])??從文件讀取指定的字節數,如果未給定或為負則讀取所有。
  • 7??file.readline([size])???讀取整行,包括 "\n" 字符。
  • 8??file.readlines([sizeint])???讀取所有行并返回列表,若給定sizeint>0,返回總和大約為sizeint字節的行, 實際讀取值可能比 sizeint 較大, 因為需要填充緩沖區。
  • 9??file.seek(offset[, whence])??設置文件當前位置
  • 10 file.tell()???返回文件當前位置。
  • 11 file.truncate([size])???從文件的首行首字符開始截斷,截斷文件為 size 個字符,無 size 表示從當前位置截斷;截斷之后 V 后面的所有字符被刪除,其中 Widnows 系統下的換行代表2個字符大小。
  • 12 file.write(str)???將字符串寫入文件,沒有返回值。
  • 13 file.writelines(sequence)??向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符。

七 、OS ?文件/目錄方法

?? ??? ? ?? ?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[, οnerrοr=None[, followlinks=False]]])
  • 在文件夾中的文件名通過在樹中游走,向上或者向下。
  • os.write(fd, str)????寫入字符串到文件描述符 fd中. 返回實際寫入的字符串長度

總結

以上是生活随笔為你收集整理的Python3 模块相关及输入输出模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。