1. 程式人生 > >python基礎彙總(二)

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,我們進入到下一個讀取文件的階段,看看這段程式碼

from sys import argv #從sys軟體包中獲取一個argv的功能。
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編碼不支援中文漢字甚至一箇中文逗號