㈠ python3 輸入輸出和File(文件) 方法
Python兩種輸出值的方式: 表達式語句和 print() 函數。第三種方式是使用文件對象的 write() 方法,標准輸出文件可以用 sys.stdout 引用。
如果你希望輸出的形式更加多樣,可以使用 str.format() 函數來格式化輸出值。如果你希望將輸出的值轉成字元串,可以使用 repr() 或 str() 函數來實現。
str(): 函數返回一個用戶易讀的表達形式。
repr(): 產生一個解釋器易讀的表達形式。
str.format() 的使用
讀取鍵盤輸入
Python 提供了 input() 內置函數,從標准輸入讀入一行文本,默認的標准輸入是鍵盤。
open() 用於打開一個文件,並返迴文件對象,基本語法格式如下:
open(filename, mode='r')
完整的語法格式為:
open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數說明:
filename: 必需,文件路徑+文件名稱(相對或者絕對路徑)
mode: 可選,文件打開模式:只讀,寫入,追加等,默認模式為只讀(r)
buffering: 設置緩沖
encoding: 一般使用utf8
errors: 報錯級別
newline: 區分換行符
closefd: 傳入的file參數類型
opener: 設置自定義開啟器,開啟器的返回值必須是一個打開的文件描述符。
不同模式mode打開文件的說明:
t 文本模式 (默認的模式)
b 二進制模式,一般用於非文本文件如圖片等
x 寫模式,新建一個文件,如果該文件已存在則會報錯
+ 打開一個文件進行更新(可讀可寫)
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。是默認模式。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。
w 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
w+ 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。
f.write(string) 將 string 寫入到文件中, 然後返回寫入的字元數
f.writelines(sequence) 向文件寫入一個序列字元串列表,如果需要換行則要自己加入每行的換行符。
f.read(size) 讀取一定數目的數據, 然後作為字元串或位元組對象返回。size 是一個可選參數。當 size 參數忽略或者為負, 那麼該文件的所有內容都將被讀取並且返回。
f.readline() 從文件中讀取單獨的一行。換行符為 '\n'。讀取整行,包括 "\n" 字元。f.readline() 如果返回一個空字元串, 說明已經讀取到最後一行。
f.readlines([sizeint])] 讀取所有行並返回列表類型,若給定sizeint>0,返回總和大約為sizeint位元組的行, 並且將這些位元組按行分割。實際讀取值可能比 sizeint 較大, 因為需要填充緩沖區。
f.tell() 返迴文件對象當前所處的位置, 它是從文件開頭開始算起的位元組數。
f.seek() 移動文件讀取指針到指定位置,如果要改變文件當前的位置, 可以使用f.seek(offset, from_what) 函數。from_what 的值(默認為0), 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示文件的結尾,例如:
seek(x,0) : 從起始位置即文件首行首字元開始移動 x 個字元
seek(x,1) : 表示從當前位置往後移動x個字元
seek(-x,2):表示從文件的結尾往前移動x個字元
file.flush() 刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件, 而不是被動的等待輸出緩沖區寫入
file.fileno() 返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上
file.isatty() 如果文件連接到一個終端設備返回 True,否則返回 False
file.truncate([size]) 從文件的首行首字元開始截斷,截斷文件為 size 個字元,無 size 表示從當前位置截斷;截斷之後後面的所有字元被刪除,其中 windows 系統下的換行代表2個字元大小。
f.close() 關閉文件並釋放系統的資源。關閉後文件不能再進行讀寫操作,否則會拋出異常
當處理一個文件對象時, 使用 with 關鍵字是非常好的方式。在結束後, 它會幫你正確的關閉文件。 而且寫起來也比 try - finally 語句塊要簡短:
python的pickle模塊實現了基本的數據序列和反序列化。通過pickle模塊的序列化操作能夠將程序中運行的對象信息保存到文件中去,永久存儲。通過pickle模塊的反序列化操作能夠從文件中創建上一次程序保存的對象。
基本介面:
pickle.mp(obj, file, [,protocol])
有了 pickle 對象, 就能對 file 以讀取的形式打開:
x = pickle.load(file)
從 file 中讀取一個字元串,並將它重構為原來的python對象。
示例:使用pickle模塊將數據對象保存到文件
示例:使用pickle模塊從文件中重構python對象
㈡ python文件的創建、寫入、讀取
最近在構思如何 本地化股票數據 ,覺得有必要復習一下python對文件的創建、寫入、和讀取。
首先先了解一下對於文件的處理都有常用函數:
open(path, mode):生成文件對象。
參數說明:path文件路徑、mode文件的操作模式
文件的操作模式說明
1、寫入模式:『w』創建、『wb』創建二進制、『a』追加內容、『ab』二進制形式追加內容(另外如在後面添加『+』號,附加讀取功能如:『w+』)
可用write()、writelines()寫入內容、close()保存文件
注意:windows系統在輸入寫入中文時,輸入參數 encoding=『utf-8』
可用read()函數對文件內容進行讀取
注意:讀取的內容是從結尾開始的,用seek(0)函數指定讀取位置為開頭
這里我用『w+』模式來舉例
2、讀取模式:『r』讀取內容、『rb』讀取二進制內容(區別於寫入模式的讀取,讀取模式從開頭開始讀取)
除了read()、還有readline()調用一次返回一行數據、readlines()返回每行數據list
另外還有mode屬性:看查文件對象的模式、closed屬性:判斷文件是否關閉、name屬性:返迴文件名
這里我還要介紹一個關鍵字with,他是一個表達式能為調用的文件對象別名,且自動關閉文件。
㈢ python輸入3輸出123
讀取鍵盤輸入
內置函數input([prompt]),用於從標准輸入讀取一個行,並返回一個字元串(去掉結尾的換行符):
s = input("Enter your input:")
登錄後復制
註:在Python 3.x版本中取消了 raw_input() 函數。
列印到屏幕
最簡單的輸出方法是用print語句,你可以給它傳遞零個或多個用逗號隔開的表達式:
print([object, ...][, sep=' '][, end='endline_character_here'][, file=redirect_to_here])
登錄後復制方括弧內是可選的,sep表示分割符,end表示結束符,file表示重定向文件。如果要給sep、end、file指定值必須使用關鍵字參數。
㈣ python怎樣讀取txt文件的數據內容
我們使用python的時候經常需要讀取txt文件中的內容,那麼該如何讀取呢?下面我給大家分享一下。
首先我們新建一個txt文件,在裡面寫入一些內容,如下圖所示
接下來打開運行界面,輸入CMD命令,如下圖所示
然後進入CMD界面以後我們輸入python命令進入python環境,如下圖所示
最後我們通過python中的open方法打開txt文件,然後通過read方法讀取文件內容,如下圖所示
㈤ Python,怎麼在輸入非數字時,輸出一句話
Python提供了兩個內置函數從標准輸入讀入一行文本,默認的標准輸入是鍵盤。如下:
1.raw_input
2.input
raw_input函數
raw_input() 函數從標准輸入讀取一個行,並返回一個字元串(去掉結尾的換行符):
復制代碼 代碼如下:
str = raw_input("Enter your input: ");
print "Received input is : ", str
這將提示你輸入任意字元串,然後在屏幕上顯示相同的字元串。當我輸入"Hello Python!",它的輸出如下:
復制代碼 代碼如下:
Enter your input: Hello Python
Received input is : Hello Python
㈥ Python基礎之:Python中的IO
IO就是輸入和輸出,任何一個程序如果和外部希望有交互的話,都需要使用到IO。相對於java而言,Python中的IO更加的簡單,易用。
本文將會詳細介紹Python中的IO操作。
linux中有三種標准輸入輸出,分別是STDIN,STDOUT,
STDERR,對應的數字是0,1,2。
STDIN是標准輸入,默認從鍵盤讀取信息;
STDOUT是標准輸出,默認將輸出結果輸出至終端;
STDERR是標准錯誤,默認將輸出結果輸出至終端。
我們常用的 2>&1,指將標准輸出、標准錯誤指定為同一輸出路徑 。
python中,我們可以使用print方法來輸出信息。\
我們看下print函數的定義:
print函數將 objects 列印到 file 指定的文本流,以 sep 分隔並在末尾加上 end。 sep, end, file 和 flush 如果存在,那麼必須以關鍵字參數的形式給出。
所有非關鍵字參數都會被轉換為字元串,並會被寫入到流,以 sep 分割,並在末尾加上 end。 sep 和 end 都必須為字元串;它們也可以為 None,這意味著使用默認值。 如果沒有給出 objects,則 print() 將只寫入 end。
file 參數必須是一個具有 write(string) 方法的對象;如果參數不存在或為 None,則將使用 sys.stdout。 由於要列印的參數會被轉換為文本字元串,因此 print()不能用於二進制模式的文件對象。 對於這些對象,可以使用 file.write(...)。
輸出是否被緩存通常決定於 file,但如果 flush 關鍵字參數為真值,輸出流會被強制刷新。
可以看到print的輸出格式還是比較簡單的。我們接下來看一下怎麼豐富輸出的格式。
如果想要格式化字元串,可以在字元串的開始引號之前加上 f 或 F。
這樣的話,我們可以直接在字元串中引入變數值,只需要把變數放在 { 和 } 中間即可。
除了在{ }中放入Python變數之外,還可以在其中放入函數:
在 ':' 後傳遞一個整數可以讓該欄位成為最小字元寬度。方便列對齊:
{ }中的變數後面還可以跟著轉值符號:'!a' 表示應用 ascii() ,'!s' 表示應用 str(),還有 '!r' 表示應用 repr():
除此之外,str本身自帶一個功能強大的format 函數:
調用此方法的字元串可以包含字元串字面值或者以花括弧 {} 括起來的替換域,每個替換域可以包含一個位置參數的數字索引,或者一個關鍵字參數的名稱。 返回的字元串副本中每個替換域都會被替換為對應參數的字元串值。
再看一個使用索引的例子:
看一個關鍵字的例子:
再看一個組合的例子:
還有非常復雜的組合的例子:
或者使用 '**' 符號將 table 作為關鍵字參數傳遞:
還可以使用n類型 '{:n}' 來格式化數字:
如果我們只是想要將Python對象轉換為字元串,那麼可以使用repr()或者str(), str() 函數是用於返回人類可讀的值的表示,而 repr()是用於生成解釋器可讀的表示。
舉個例子:
str對象還提供了一些對字元串進行手動格式化的方法:
字元串對象的 str.rjust()方法通過在左側填充空格來對給定寬度的欄位中的字元串進行右對齊。類似的方法還有 str.ljust()和 str.center()。
如果輸入的字元串太長,它們不會截斷字元串,而是原樣返回。
如果想保證字元串的長度,則可以使用切片: x.ljust(n)[:n] 。
還可以使用str.zfill()來用0填充字元串:
% 也可以用來格式化字元串,給定 'string' % values,則 string 中的 % 實例會以零個或多個 values 元素替換。 此操作通常被稱為字元串插值。
python中文件讀取非常簡單,使用open()方法即可。
open()會返回一個文件對象。我們看一下它的定義:
第一個參數是文件名。
第二個參數是文件打開的模式,可用的模式有:
默認模式為 'r' 。
看一個open文件的例子:
文件打開了,自然需要被關閉,所以我們需要顯示調用 f.close() 方法:
有沒有類似java中的try with resource的自動關閉文件的功能呢?
我們可以使用with,這樣文件在使用完畢之後,會自動被關閉,非常的好用。
文件被關閉之後,如果想要再次讀取,就會報錯:
獲取到文件對象之後,我們就可以調用文件中的方法了。
f.read(size) 會讀取一些數據並將其作為字元串(在文本模式下)或位元組串對象(在二進制模式下)返回。
size 是一個可選的數值參數。 當 size 被省略或者為負數時,將讀取並返回整個文件的內容;當取其他值時,將讀取並返回至多 size 個字元(在文本模式下)或 size 個位元組(在二進制模式下)。 如果已到達文件末尾,f.read() 將返回一個空字元串 ('')。
f.readline() 從文件中讀取一行;換行符(\n)留在字元串的末尾,如果文件不以換行符結尾,則在文件的最後一行省略。如果 f.readline() 返回一個空的字元串,則表示已經到達了文件末尾,而空行使用 '\n' 表示,該字元串只包含一個換行符。
還有一種更加簡單的讀取方法,就是從文件中遍歷:
如果你想以列表的形式讀取文件中的所有行,你也可以使用 list(f) 或 f.readlines()。
f.write(string) 會把 string 的內容寫入到文件中,並返回寫入的字元數。
如果是在文本模式下,那麼在寫入文件之前,需要把對象轉換成為文本形式,我們可以使用str()來進行轉換。
使用f.seek(offset, whence)可以定位文件指針的位置,然後後續會從該位置開始進行讀取操作。
whence 的 0 值表示從文件開頭起算,1 表示使用當前文件位置,2 表示使用文件末尾作為參考點。 whence 如果省略則默認值為 0,即使用文件開頭作為參考點。
JSON是一個很方便進行信息交流的文件格式。我們看下怎麼使用JSON來將對象轉換為字元串:
mps是將對象轉換為json str。 json還有一個mp方法,可以直接將對象存入到文件中。
要從文件中解析出json字元串,可以使用load:
JSON 中的鍵-值對中的鍵永遠是 str類型的。當一個對象被轉化為 JSON 時,字典中所有的鍵都會被強制轉換為字元串。這所造成的結果是字典被轉換為 JSON 然後轉換回字典時可能和原來的不相等。換句話說,如果 x 具有非字元串的鍵,則有 loads(mps(x)) != x。
㈦ Python3提供了__函數從標准輸入(如鍵盤)讀入一行文本
應該是input吧。
㈧ Python常見的漏洞都有什麼
首先是解析XML漏洞。如果您的應用程序載入和解析XML文件,那麼您可能正在使用XML標准庫模塊。有一些針對XML的常見攻擊。大多數是DoS風格(旨在破壞系統而不是竊取數據)。這些攻擊很常見,尤其是在解析外部(即不受信任的)XML文件時。一種這樣的攻擊是“十億笑”,因為載入的文件包含許多(十億)“笑”。您可以載入XML實體文件,當XML解析器嘗試將此XML文件載入到內存中時,它將消耗許多GB的內存。
要知道SSTI是ServerSideTemplateInjection,是Web開發中使用的模板引擎。模板引擎可以將用戶界面和業務數據分離,邏輯代碼和業務代碼也可以相應分離,代碼復用變得簡單,開發效率也提高了。模板在伺服器端使用,數據由模板引擎渲染,然後傳遞給用戶,可以為特定用戶/特定參數生成對應的頁面。我們可以對比一下網路搜索,搜索不同詞條得到的結果頁面是不一樣的,但是頁面的邊框基本是一樣的。