Python自動化開發-day01-Python開發基礎2-元組、字典、文件操作
阿新 • • 發佈:2017-05-31
文件 list pri 循環 pop 修改 寫入 replace pda
學習內容:
1. 元組操作
2. 字典操作
3. 文件操作
4. 深淺copy
1. 元組操作:
元組和列表非常相似,只不過元組不能在原處修改(它是不可變的),並且通常寫成圓括號中的一系列項。
# 元組定義(存取方式同列表), 元組只有2個方法:index 和 count names = ("wills","oscar","tom","jerry")
2. 字典操作:
# 字典定義 employees = { "s001":"wills", "s002":"jerry", "s003":"tom" } print(employees) # 增加Key employees["s004"] = "felicity" print(employees) # 修改值 employees["s004"] = "oliver" print(employees) # 查找 if "s001" in employees: print(employees.get("s001")) print(employees.get("s001")) print(employees["s001"]) # 刪除 del employees["s002"] employees.pop("s002") employees.popitem() # 隨機刪除 # 打印key print(employees.keys())# 打印values print(employees.values()) # 打印items,包含k,v print(employees.items()) # 字典嵌套 names = { "wills":{"sex":"female","job":"devOps","hobby":"running"}, "oscar":{"sex":"male","job":"backenddev","hobby":"smoking"}, "tom":{"sec":"male","job":"dev","hobby":"travel"} } names["oscar"]["hobby"] = "no smoking" print(names) # 字典循環遍歷 for k,v in employees.items(): print(k,v) for key in employees: print(key,employees[key]) # 合並(更新了"s001",追加了"s007" employees2 = { "s001":"arrows", "s007":"chenergou" } employees.update(employees2) print(employees)
3. 文件操作
文件操作的流程:
1. 打開文件,得到文件名柄並賦值給一個變量,
2. 通過句柄對文件進行操作
3. 文件關閉
文件的打開模式:
1. r, 只讀模式(默認)
2. w, 只寫模式(不可讀,不存在則創建,存在則刪除內容)
3. a, 追加模式(可讀,不存在則創建,存在則只追加內容)
"+" 表示可以同時讀寫某個文件
1. r+, (可讀寫文件,可讀可寫可追加)
2. w+, (寫讀)
3. a+, (同a)
"U"表示在讀取時,可以將\r \n \r\n自動轉換成\n (與r 或 r+模式同時使用)
"b"表示處理二進制文件(可以與r w a 同時使用)
# 以寫模式打開文件 myfile = open("new.txt","w") # 寫一行文本 myfile.write("hello world!\n") myfile.write("second line\n") myfile.write("thrid line\n") # 關閉文件 myfile.close() # 以只讀模式打開文件 myfile = open("new.txt") # 一次讀取一行 print(myfile.readline()) # 一次讀取所有行 print(myfile.readlines())
文件修改的兩種方式:
1. 一次將文件所有行讀入內存變量,然後修改,再寫入文件。(缺點是浪費太多內存,不建議)。
2. 一行一行的讀取文件,只修改需要修改的行。
# 一行一行的讀取文件內容,將thrid改為three myfile = open("new.txt") myfile2 = open("new2.txt","w") for line in myfile: if "thrid" in line: line = line.replace("thrid","three") myfile2.write(line) myfile.close() myfile2.close()
4. 深淺copy
import copy # 數字copy, a = 1 b = a # b只是copy了a的值,所以個修改a的值不會影響b的值。 a =2 print("a= %d , b= %d" %(a,b)) print("#----------------------------------------------") # 淺copy: 對於一維列表,copy的是值;對於二維列表,copy的是引用 names = ["stark","spider",["captain1","captain2","captain3"],"flush","runner","vampire"] names2 = copy.copy(names) # 第一種淺COPY的方式 # names2 = names[:] # 第二種淺COPY的方式 # names2 = list(names) # 第三種淺COPY的方式 names[1] = "Wills.Spider" names[2][0] = "Captain" print("淺COPY:") print("names:",names) print("names2:",names2) print("#----------------------------------------------") # 深copy: 對於一維列表,copy的是值;對於二維列表,copy的也是值。 names = ["stark","spider",["captain1","captain2","captain3"],"flush","runner","vampire"] names2 = copy.deepcopy(names) names[1] = "Wills.Spider" names[2][0] = "Captain" print("淺深COPY:") print("names:",names) print("names2:",names2) print("#----------------------------------------------") ‘‘‘ p1和p2是夫妻,2人共有100萬存款,當p1取走20萬時,p2去查詢時,會發現余額還有80萬 ‘‘‘ print("淺COPY的實際應用") person = ["name",["saving",1000000]] p1 = person[:] p2 = person[:] p1[0] = "Romeo" p2[0] = "Juliet" print(p1) print(p2) print("p2取款20萬") p2[1][1] = "800000" print(p1) print(p2)
Python自動化開發-day01-Python開發基礎2-元組、字典、文件操作