python基礎彙總(二)
註釋:# 英文名是octothorpe
在敲程式碼的過程中,如果想對一段程式碼進行註釋處理,全選然後 Ctrl+/ 鍵
cars_not_driven=100
print("There will be",cars_not_driven,"empty cars today.")
輸出:
There will be 100 empty cars today.
%r %s %d等等的應用:他們是一種格式控制工具。讓我們看看下面比較完整的格式控制工具集。
%c 格式化字元及其ASCII碼
%s 格式化字串
%d 格式化字整數
%u 格式化無符號整型
%o 格式化無符號八進位制熟
%x 格式化無符號十六進位制數
%X 格式化無符號十六進位制數(大寫)
%f 格式化浮點數字,可指定小數點後的精度
%e 用科學記數法格式化浮點數
%p 用十六進位制數格式化變數的地址
如果我們不太確定用什麼,那麼用%s是最保險的,它會把任何資料型別轉換為字串
%r和%s有什麼不同?
%r用來除錯最好,因為它會顯示變數的原始資料,而%s和其他符號則是用來向用戶顯示輸出的。
轉義字元 \
錯誤例子:
print(“I said :“get out!””) 這段程式碼很明顯是不能執行的,因為後面兩個引號會被識別為是字串的邊界,所以正確的寫法應該是加入轉義字元,不影響最終結果的列印。
正確例子:
print("I said:\"get out!\"")
以下你會看到一些經典的轉義序列:
\\ 反斜槓(\)
\' 單引號(')
\" 雙引號(")
\n 換行符
\r 回車符
\t 水平製表符
\v 垂直製表符
在python3中 已經不支援raw_input()的寫法
而是input(),但是你輸入進去的資料會被當作字串處理
所以假如你要把你輸入的資料換成一種資料型別的時候,比如整數
int(input())
一般來說,你提問別人的時候,你會輸入這樣的程式碼:
print(“What is your name?”)
my_name=input()
其實,你可以合併到一句,進行直接的提問:
my_name=input("What is your name?")
from sys import argv
這一段呢比較有意思,其實就是包
argv:引數變數。
import語句:將python的特性引入指令碼的方法,相當於需要什麼就呼叫什麼來用。
還是暴力通俗解釋一下吧,from sys import argv你可以理解為:
sys是一個功能包,這句話的意思就是從該功能包中取出argv這個特性來使用,實現相應的功能。
不多BB,我們進入到下一個讀取文件的階段,看看這段程式碼
script,filename=argv #輸入本檔案的名字和想要執行檔案的名字。
txt=open(filename) #python open() 函式 可以開啟一個外部檔案。
print("Here is your file %r:"%filename) print(txt.read()) #將開啟的外部檔案的變數 進行變數.read()執行,即可列印外部檔案的內容。
print("Type the filename again:") file_again=input(">")
txt_again=open(file_again) print(txt_again.read()) 上文中,我用了txt變數定義一個open()函式。所以這個時候txt就等於你要開啟的外部檔案了 然後print(txt.read()) 你就可以打印出你要開啟的外部檔案裡面的內容了,通常外部檔案的型別是txt,其他型別也可以。 可以看看下面的擴充套件知識: 以下是其他各種與檔案相關的命令: close---關閉檔案。 read---讀取檔案內容。(可以把結果賦給一個變數) readline---讀取文字檔案中的一行。 truncate---清空檔案,請小心使用該命令。 write(stuff)---將stuff寫入檔案。
那麼,看到這兒,很顯然了,心中肯定不自覺的萌生出想要進行騷操作的想法。比如開啟1.txt外部檔案並修改裡面的內容:
在argv中,先剛一波這一段 newfile=1.txt,進入正題
txt=open(newfile,‘w’)
這時候有些人就要說了,臥槽,這‘w’是什麼JB玩意!
不要慌,這個‘w’乃是逆天改命大法的一個超級字串……
行吧!‘w’其實就是一個引數,意味著這個檔案進入寫入模式,可以進行編輯了。
那麼我們來看看相關的引數,如下:
open(檔名,'w')是寫入模式 open(檔名,'r')是讀取模式 open(檔名,'a')是追加模式 open(檔名)是預設模式,訪問 不過有些人應該會有這樣的需求,先把文件裡面的內容清空,然後再自己編輯東西加進去 那就加一句 txt.truncate()#用於截斷檔案並返回截斷的位元組長度 指定長度的話,就從檔案的開頭開始截斷指定長度,其餘內容刪除; 不指定長度的話,也就是隻打一個()就從檔案開頭開始截斷到當前位置,其餘內容刪除。 哦對,差點忘了,還有要怎麼寫進去這個外部檔案呢? txt.write() 這就是一個寫入操作。 最後呢,你如果只是默默改掉txt檔案裡面的內容,並不想讓它一直出現 最後來個拔吊無情的程式碼,進行關閉它吧! txt.close() 接下來我們進入一個無中生有的階段,就是將一個存在的txt文件進行一個複製,生成新的txt的文件。 廢話不多說,程式碼來也: from sys import argv from os.path import exists#一個神祕的os.path模組,此程式碼判斷物件在不在。script,from_file,to_file=argv
print("Copying from %s to %s"%(from_file,to_file))#交代想做的事
#we could do these two on one line too,how? in_file=open(from_file) indata=in_file.read()#這是一段好程式碼,你並不需要打印出來,直接賦值 乾淨利落。
print("The input file is %d bytes long"%len(indata))
print("Does the output file exist?%r"%exists(to_file)) print("Ready,hit RETURN to continue,CTRL-C to abort.") input()
out_file=open(to_file,'w')#你想要複製到一個新檔案,肯定要開啟寫入模式編輯呀。 out_file.write(indata)
print("Alright,all done.")
out_file.close()#關閉兩個外部檔案,使整個過程始終停留在這個檔案。 in_file.close()
輸出的結果:
Copying from 1.txt to new-1.txt
The input file is 98 bytes long
Does the output file exist?False
Ready,hit RETURN to continue,CTRL-C to abort.
Alright,all done.
(可以看到,資料夾裡面多了一個new-1.txt檔案,內容和1.txt一模一樣)
其實呢,這個指令碼太特麼囉嗦了,有沒有道理?
我直接讓他進行復制,不要問我那麼多問題,我們屌大的也很忙啊!
於是我簡化了這段程式碼如下:
from sys import argv from os.path import exists#一個神祕的os.path模組,此程式碼判斷物件在不在。script,old_file,new_file=argv
aa=open(old_file) fileone=aa.read() #我遇到過一個很有意思的問題,我想複製一個裡面內含中文字元或中文逗號的TXT的時候, #此處瘋狂報錯,於是我將TXT裡面的內容換成了英文,這段程式碼成功執行出來。 #待解決問題:複製一箇中文TXT。
bb=open(new_file,'w') bb.write(fileone)
aa.close() bb.close()
所以,怎麼成功複製帶有中文的txt文件,目前來說還在探索。雖然我知道,python編碼不支援中文漢字甚至一箇中文逗號