008-2018-09-12 文件操作
生活随笔
收集整理的這篇文章主要介紹了
008-2018-09-12 文件操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.今日內(nèi)容大綱
一. 昨日內(nèi)容回顧1. join() 可以吧列表轉(zhuǎn)化成字符串split() 把字符串轉(zhuǎn)化成列表2. 關(guān)于刪除列表在循環(huán)的時候不能進(jìn)行刪除. 索引會跟著你刪除而改變創(chuàng)建新列表. 把要刪除的內(nèi)容放在新列表中. 循環(huán)新列表. 刪除老列表字典在循環(huán)中不能刪除.字典在循環(huán)的時候不能改變大小.創(chuàng)建列表. 把要刪除的key保存在列表中. 循環(huán)列表刪除字典fromkeys(keys, value) 使用keys中的元素和value組合成key:value創(chuàng)建新字典3. set集合特點(diǎn): 無序, 不重復(fù), 可哈希set集合本身可變的. 不可哈希. frozenset()4. 深淺拷貝1. 賦值. 沒有創(chuàng)建新對象.2. 淺拷貝. 創(chuàng)建新的對象. 淺拷貝只復(fù)制一層內(nèi)容3. 深拷貝. 創(chuàng)建新對象. 把整個對象的內(nèi)部全部都進(jìn)行拷貝\女神(eva_j)的博客 二. 作業(yè)講解三. 今日主要內(nèi)容對文件內(nèi)部的內(nèi)容進(jìn)行操作1. open("文件路徑", mode="模式", encoding="編碼")文件的路徑:1. 絕對路徑:1. 從磁盤根目錄尋找2. 網(wǎng)絡(luò)上的路徑2. 相對路徑相對于當(dāng)前你這個程序所在的文件夾.(用的最多的)模式r 讀. 只讀模式w 寫 只能寫a 追加寫, 只能寫入b: bytes 這個時候處理文件的是字節(jié)操作非文本文件的時候用帶b的rbwbabr+ 讀寫模式w+ 寫讀模式a+ 追加讀模式r+bw+ba+b光標(biāo):移動到開頭: seek(0)移動到末尾: seek(0, 2)文件的修改:1. 從源文件中讀取內(nèi)容. 修改內(nèi)容. 寫入到文件副本中.2. 刪除源文件. 重命名文件副本為源文件的名字with open(..) as f :明天預(yù)習(xí):函數(shù)(非常重要, 簡單)參數(shù), 返回值2.練習(xí)
''' 1. 判斷一個數(shù)是否是水仙花數(shù), 水仙花數(shù)是一個三位數(shù), 三位數(shù)的每一位的三次方的和還等于這個數(shù). 那這個數(shù)就是一個水仙花數(shù), 例如: 153 = 1**3 + 5**3 + 3**32. 給出一個純數(shù)字列表. 請對列表進(jìn)行排序(升級題). 思路: 1. 完成a和b的數(shù)據(jù)交換. 例如, a = 10, b = 24 交換之后, a = 24, b = 10 2. 循環(huán)列表. 判斷a[i]和a[i+1]之間的大小關(guān)系, 如果a[i]比a[i+1]大. 則進(jìn)行互換. 循環(huán)結(jié)束的時候. 當(dāng)前列表中最大的數(shù)據(jù)就會被移動到最右端. 3. 想一想, 如果再次執(zhí)行一次上面的操作. 最終第二大的數(shù)據(jù)就移動到了右端. 以此類推. 如果反復(fù)的進(jìn)行執(zhí)行相應(yīng)的操作. 那這個列表就變成了一個有序列表.3. 完成彩票36選7的功 能. 從36個數(shù)中隨機(jī)的產(chǎn)生7個數(shù). 最終獲取到7個不重復(fù)的數(shù)據(jù)作為最終的開獎結(jié)果. 隨機(jī)數(shù): from random import randint randint(0, 20) # 0 - 20 的隨機(jī)數(shù)4. 稅務(wù)部門征收所得稅. 規(guī)定如下:1). 收入在2000以下的. 免征.2). 收入在2000-4000的, 超過2000部分要征收3%的稅.3). 收入在4000-6000的, 超過4000部分要征收5%的稅.4). 收入在6000-10000的, 超過6000部分要征收8%的稅.4). 收入在10000以上的, 超過部分征收20%的稅.注, 如果一個人的收入是8000, 那么他要交2000到4000的稅加上4000到6000的稅加上6000到8000的稅.收入 = 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8% 讓用戶輸入它的工資, 計算最終用戶拿到手是多少錢.默寫: 簡述什么是深淺拷貝. 刪除列表中姓周的人的信息 lst = [‘周芷若’, ‘周伯通’, ‘王重陽’, ‘周葫蘆娃’]'''# 1.判斷一個數(shù)是否是水仙花數(shù), 水仙花數(shù)是一個三位數(shù), # 三位數(shù)的每一位的三次方的和還等于這個數(shù). # 那這個數(shù)就是一個水仙花數(shù), # 例如: 153 = 1**3 + 5**3 + 3**3# num = input("請輸入一個三位數(shù):") # if len(num) == 3: # result = int(num[0])**3 + int(num[1])**3 + int(num[2])**3 # if int(num) == result: # print("是一個水仙花數(shù)") # else: # print("不是水仙花數(shù)") # else: # print("親, 你輸入的不是三位數(shù)") ## 3.完成彩票36選7的功能. 從36個數(shù)中隨機(jī)的產(chǎn)生7個數(shù). 最終獲取到7個不重復(fù)的數(shù)據(jù)作為最終的開獎結(jié)果. # 隨機(jī)數(shù): # from random import randint # # s = set() # while len(s) < 7: # n = randint(1, 33) # s.add(n) # print(s)# 稅務(wù)部門征收所得稅. 規(guī)定如下:? # ?? ?? ? 1). 收入在2000以下的. 免征. # ?? ?? ? 2). 收入在2000-4000的, 超過2000部分要征收3%的稅.? # ?? ?? ? 3). 收入在4000-6000的, 超過4000部分要征收5%的稅. # ?? ?? ? 4). 收入在6000-10000的, 超過6000部分要征收8%的稅.?? # ? ??? ? 4). 收入在10000以上的, 超過部分征收20%的稅.? # ? ? 注, 如果一個人的收入是8000, 那么他要交2000到4000的稅加上4000到6000的稅加上6000到8000的稅.? # ? ??? ? 收入 = 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8% # 讓用戶輸入它的工資, 計算最終用戶拿到手是多少錢.# salary = int(input("請輸入你的工資:")) # if salary <= 2000: # print("你不用交稅") # print("你的實(shí)際收入是%s" % salary) # elif salary <= 4000: # tax = (salary - 2000)*0.03 # print("你要交%s稅 " % tax) # print("你的實(shí)際收入是:%s" % (salary-tax)) # elif salary <= 6000: # tax = 2000* 0.03 + (salary-4000) * 0.05 # print("你要交%s稅 " % tax) # print("你的實(shí)際收入是:%s" % (salary - tax)) # elif salary <= 10000: # tax = 2000* 0.03 + 2000*0.05 +(salary - 6000) * 0.08 # print("你要交%s稅 " % tax) # print("你的實(shí)際收入是:%s" % (salary - tax)) # else: # tax = 2000 * 0.03 + 2000 * 0.05 + 4000 * 0.08 + (salary-10000) * 0.20 # print("你要交%s稅 " % tax) # print("你的實(shí)際收入是:%s" % (salary - tax)) # ## a = 10 # b = 20 # c = a # a = b # b = c # print(a, b)# a = 10 # b = 20 # a, b = b, a # print(a, b)# 大學(xué)課程中的數(shù)據(jù)結(jié)構(gòu)-嚴(yán)蔚敏. # 冒泡排序(使用兩兩相鄰的數(shù)進(jìn)行比較.) 快排, 插入排序, 歸并排序, 堆排序, 希爾排序 # 0 1 2 3 4 5 6 lst = [175, 160, 185, 134, 196, 128, 155, 170, 185, 189, 236] for j in range(len(lst)):# 第i個和第i+1個比較for i in range(len(lst)-1): # 自己優(yōu)化if lst[i] > lst[i+1]:lst[i], lst[i+1] = lst[i+1], lst[i] print(lst)3.基本文件操作
# f = open("d:/小護(hù)士模特少婦女網(wǎng)紅.txt", mode="r", encoding="UTF-8") # # content = f.read() # 讀取內(nèi)容, 讀取3個字符 # line1 = f.readline().strip() # 空白: 空格, \t, \n # line2 = f.readline().strip() # print(line1) # print(line2)# content = f.read() # 一次全都讀取出來. 缺點(diǎn): 1. 讀取大的文件的時候. 內(nèi)存容易溢出 2. 操作比較麻煩# content = f.readlines() # 也是全都加載進(jìn)來了. # print(content)# f是一個可迭代對象 f = open("d:/周潤發(fā)大戰(zhàn)奧特曼.txt", mode="r", encoding="utf-8") # 默認(rèn)跟著操作系統(tǒng)走的 GBK # for line in f: # 內(nèi)部其實(shí)調(diào)用的是readline() # print(line) # f.close() # 關(guān)閉# 打印的末尾是換行 # print("哈哈") # print("呵呵")4.write()
f = open("d:/sylar.txt", mode="w", encoding="utf-8") f.write("周筆暢\n") # 寫的時候. 先清空. 再寫入. w f.write("胡辣湯\n") f.write("實(shí)付款\n")f.flush() f.close()5.append()
f = open("d:/sylar.txt", mode="a", encoding="utf-8") f.write("娃哈哈") # 追加寫 f.write("爽歪歪") f.flush() f.close()6.文件拷貝
f1 = open("d:/linux學(xué)院-桌面背景.jpg", mode="rb") f2 = open("E:/劉偉自拍.jpg", mode="wb") for line in f1:f2.write(line) f1.close() f2.flush() f2.close()7.讀寫模式
f = open("菜單", mode="r+", encoding="utf-8") # r+最常見 s = f.read(1) # 讀取一個字符 print(s) f.write("胡辣湯") # r+模式. 如果你執(zhí)行讀了操作. 那么寫操作的時候. 都是寫在文件的末尾. 和光標(biāo)沒有關(guān)系 # f.write("ab") # 在文件開頭寫入. 寫入的是字節(jié),把原來的內(nèi)容蓋上# for line in f: # print(line) # f.write("蛋炒飯") # 正確用法: 先讀后寫 f.close()8.寫讀模式
f = open("菜單", mode="w+", encoding="utf-8") # 很少用. f.write("疙瘩湯") f.seek(0) # 移動到開頭 content = f.read() print("讀取的內(nèi)容是", content) f.flush() f.close()9.追加模式
f = open("菜單", mode="a+", encoding="utf-8") f.write("韭菜雞蛋餃子")f.seek(0) content = f.read() print(content)10.光標(biāo)
f = open("菜單", mode="a+", encoding="utf-8") # r+ a+ w+# f.write("我要多寫一點(diǎn)內(nèi)容. 然后爭取能看到效果") # f.seek(0) # print(f.read()) # f.seek(0) # f.write("你") # # f.seek(0) # print(f.read(1)) # f.seek(0) # f.write("大米飯") # f.write("大米粥") # print(f.tell()) # f.seek(3) # 字節(jié) # print(f.read(1)) # # print(f.read(1)) # 字符 # # print(f.read(1)) # 字符 # print(f.tell()) #字節(jié) # 使用tell()可以知道光標(biāo)在哪里 # seek()可以移動光標(biāo) # 讀寫的時候. 單位 字符 # 光標(biāo): 單位是字節(jié) # 光標(biāo)移動到末尾: seek(0,2)# seek(偏移量, 位置) # 位置: 0開頭, 1當(dāng)前位置, 2末尾 # 移動到末尾: seek(0, 2)11.truncate()
f = open("我的天吶", mode="r+", encoding="utf-8") f.seek(9) f.truncate(12) # 如果沒有參數(shù). 按照光標(biāo)來階段. 如果有參數(shù). 截斷到參數(shù)位置 f.flush() f.close()12.修改文件
import os # 引入os模塊with open("alex", mode="r", encoding="utf-8") as f1, \open("alex_副本", mode="w", encoding="utf-8") as f2:for line in f1:new_line = line.replace("good", "sb")f2.write(new_line)os.remove("alex") os.rename("alex_副本", "alex")13.日志處理
result = [] with open("2018-09-12.log", mode="r", encoding="utf-8") as f:hang = f.readline()title = hang.split("|")for line in f:line = line.strip() # 去掉空白, 2018-09-11 00:00:01|劉偉|吃雞lst = line.split("|")dic = {title[0]: lst[0], title[1]: lst[1], title[2]: lst[2]}result.append(dic) print(result)14.其他
破文件.txt:我是一個破文件.fasdlkhfjasdkl? ? ? ?
操作.py:
import requests # 網(wǎng)絡(luò)請求rs = requests.get("http://pic.netbian.com/uploads/allimg/180906/180605-153622836527b2.jpg") f = open("壁紙.jpg", mode="wb") f.write(rs.content) f.flush() f.close()2018-09-12.log.txt:
時間|名字|action 2018-09-11 00:00:01|劉偉|吃雞 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:01|劉偉|吃雞 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話 2018-09-11 00:00:02|darin|打電話?
?
總結(jié)
以上是生活随笔為你收集整理的008-2018-09-12 文件操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mootools 选择器_MooTool
- 下一篇: Adobe After Effects