c++ 输出二进制_Python之输入输出(input_output)
輸出
python兩種輸出方式:表達式語句和print()
第三種方式就是使用文件對象的write()
str.formot() 格式化輸出
repr() 輸出值轉成字符串
str() 輸出值轉成字符串
##repr()/ str() ##
兩種方式輸出平方和立方表:
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 72910?1001000for 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 72910?100??1000rjust() 方法, 它可以將字符串靠右, 并在左邊填充空格。
還有類似的方法, 如 ljust() 和 center()。
str.format()
括號及其里面的字符 (稱作格式化字段) 將會被 format() 中的參數替換
print('{0} 和 {1}'.format('Google', 'Runoob'))Google?和?Runoob如果在 format() 中使用了關鍵字參數, 那么它們的值會指向使用該名字的參數。
print('{name}網址:{site}'.format(name='菜鳥教程', site='www.runoob.com'))菜鳥教程網址:www.runoob.com位置及關鍵字參數可以任意的結合
print('站點列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob', other='Taobao'))站點列表 Google, Runoob, 和 Taobao。‘!a’ (使用 ascii()), ‘!s’ (使用 str()) 和 ‘!r’ (使用 repr()) 可以用于在格式化某個值之前對其進行轉化
print('常量 PI 的值近似為:{}。'.format(math.pi))常量 PI 的值近似為:3.141592653589793。print('常量 PI 的值近似為:{!r}。'.format(math.pi))常量 PI 的值近似為:3.141592653589793。可選項 ‘:’ 和格式標識符可以跟著字段名。這就允許對值進行更好的格式化。下面的例子將 Pi 保留到小數點后三位
rint('常量 PI 的值近似為 {0:.3f}。'.format(math.pi))常量?PI?的值近似為?3.142在 ‘:’ 后傳入一個整數, 可以保證該域至少有這么多的寬度。用于美化表格時很有用
>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}>>> for name, number in table.items():... print('{0:10} ==> {1:10d}'.format(name, number))...Runoob ==> 2Taobao ==> 3Google?????==>??????????1如果你有一個很長的格式化字符串, 而你不想將它們分開, 那么在格式化時通過變量名而非位置會是很好的事情。
最簡單的就是傳入一個字典, 然后使用方括號 ‘[]’ 來訪問鍵值 :
table = {'Google': 1, 'Runoob': 2, 'Taobao': 3} print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))Runoob:?2;?Google:?1;?Taobao:?3也可以通過在 table 變量前使用 ‘**’ 來實現相同的功能:
table = {'Google': 1, 'Runoob': 2, 'Taobao': 3} print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))Runoob:?2;?Google:?1;?Taobao:?3輸入
input()
讀寫文件
open(filename,mode)
filename:filename 變量是一個包含了你要訪問的文件名稱的字符串值。
mode:mode決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,默認文件訪問模式為只讀?
模式\描述
r
以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb
以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。
r+
打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+
以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w
打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb
以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
w+
打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb+
以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a
打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
ab
以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
a+
打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。
ab+
以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。
f.readline() 會從文件中讀取單獨的一行
f=open(r'C:\Users\17854\Desktop\open.txt','r')str=f.readline()print(str)f.closef.readlines() 將返回該文件中包含的所有行,不會自動換行
f=open(r'C:\Users\17854\Desktop\open.txt','r')str=f.readlines()print(str)f.close另一種方式是迭代一個文件對象然后讀取每行:
f=open(r'C:\Users\17854\Desktop\open.txt','r')for line in f: print(line)f.closef.write(string) 將 string 寫入到文件中,?然后返回寫入的字符數
f=open(r'C:\Users\17854\Desktop\open.txt','w')num=f.write('afdshiafwhfwhf\njkashfkjdshfdshafipu')print(num)f.close()如果要寫入一些不是字符串的東西, 那么將需要先進行轉換
f=open(r'C:\Users\17854\Desktop\open.txt','a')s=('\nafdsaf',23)s=repr(s)f.write(s)f.close()f.seek(offset, from_what) 函數
from_what 的值, 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示文件的結尾,例如:
seek(x,0) :從起始位置即文件首行首字符開始移動 x 個字符
seek(x,1) :表示從當前位置往后移動x個字符
seek(-x,2):表示從文件的結尾往前移動x個字符
from_what 值為默認為0,即文件開頭。下面給出一個完整的例子
Pickle模塊:
在機器學習中,我們常常需要把訓練好的模型存儲起來,這樣在進行決策時直接將模型讀出,而不需要重新訓練模型,這樣就大大節約了時間。Python提供的pickle模塊就很好地解決了這個問題,它可以序列化對象并保存到磁盤中,并在需要的時候讀取出來,任何對象都可以執行序列化操作。
Pickle模塊中最常用的函數為:
(1)pickle.dump(obj, file, [,protocol])
函數的功能:將obj對象序列化存入已經打開的file中。
參數講解:
obj:想要序列化的obj對象。
file:文件名稱。
protocol:序列化使用的協議。如果該項省略,則默認為0。如果為負值或HIGHEST_PROTOCOL,則使用最高的協議版本。
(2)pickle.load(file)
函數的功能:將file中的對象序列化讀出。
參數講解:
file:文件名稱。
(3)pickle.dumps(obj[, protocol])
函數的功能:將obj對象序列化為string形式,而不是存入文件中。
參數講解:
obj:想要序列化的obj對象。
protocal:如果該項省略,則默認為0。如果為負值或HIGHEST_PROTOCOL,則使用最高的協議版本。
(4)pickle.loads(string)
函數的功能:從string中讀出序列化前的obj對象。
參數講解:
string:文件名稱。
【注】 dump() 與 load() 相比 dumps() 和 loads() 還有另一種能力:dump()函數能一個接著一個地將幾個對象序列化存儲到同一個文件中,隨后調用load()來以同樣的順序反序列化讀出這些對象。
dump() 與 load() 相比 dumps() 和 loads() 還有另一種能力:dump()函數能一個接著一個地將幾個對象序列化存儲到同一個文件中,但是感覺用loads()很方便,都不需要打開文件什么的
import pickledatalist=[[1,1,'yes'],[1,0,'no'],[0,1,'no'],[0,0,'no']]datadic={0:[1,2,3,4],1:('a','b'),2:{'c':'yes','d':'no'}}p=pickle.dumps(datalist)print(pickle.loads(p))[[1,?1,?'yes'],?[1,?0,?'no'],?[0,?1,?'no'],?[0,?0,?'no']]總結
以上是生活随笔為你收集整理的c++ 输出二进制_Python之输入输出(input_output)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis log4j 在日志中打印
- 下一篇: numpy二维数组改变某些数_【每天15