目錄3. 檔案的定位,重新命名和刪除
4. 資料夾的相關操作
不僅人的大腦會遺忘事情,計算機也會如此,比如乙個程式在執行過程中用了九牛二虎之力終於計算出了結果,試想一下如果不把這些資料存放起來,相比重啟電腦之後,資料就會丟失
在python中實現檔案的讀寫操作其實非常簡單,通過python內建的open
函式,我們可以指定檔名、操作模式、編碼資訊等來獲得操作檔案的物件,接下來就可以對檔案進行讀寫操作了。這裡所說的操作模式是指要開啟什麼樣的檔案(字元檔案還是二進位制檔案)以及做什麼樣的操作(讀、寫還是追加),具體的如下表所示
示例:
import time
def main():
f = open('f:', 'r', encoding='utf-8')
print(f.read())
f.close()
# 一次性讀取整個檔案的內容
with open("f:","r",encoding='utf-8') as f:
print(f.read())
# 通過for-in迴圈逐行讀取
with open("f:",mode="r") as f:
for line in f:
print(line,end="")
# 讀取檔案按行讀取到列表中
with open("f:","r",encoding='utf-8') as f:
lines = f.readlines()
print(lines)
if __name__ == "__main__":
main()
注:通過with
關鍵字指定檔案物件的上下文環境並在離開上下文環境時自動釋放檔案資源,無須在 finally 關閉檔案流
要將文字資訊寫入檔案檔案也非常簡單,在使用open
函式時指定好檔名並將檔案模式設定為'w'
即可。注意如果需要對檔案內容進行追加式寫入,應該將模式設定為'a'
。下面的例子演示了如何將1-9999之間的素數分別寫入三個檔案中(1-99之間的素數儲存在a.txt中,100-999之間的素數儲存在b.txt中,1000-9999之間的素數儲存在c.txt中)。
from math import sqrt
#是否是素數
def is_prime(n):
"""判斷素數的函式"""
assert n > 0
for x in range(2,int(sqrt(n)) + 1):
if n % x == 0:
return false
return false if n == 1 else true
def main():
filenames = ('f:',"f:","f:")
fs_list =
try:
for f in filenames:
for number in range(1,10001):
if is_prime(number):
if number < 100:
print("1:",number)
fs_list[0].write(str(number) + '\n')
elif number < 1000:
print("2:",number)
fs_list[1].write(str(number) + '\n')
else:
print("3:",number)
fs_list[2].write(str(number) + '\n')
except exception as e:
print(e)
finally:
for fs in fs_list:
fs.close()
print("操作完成")
if __name__ == '__main__':
main()
了解完文字檔案的操作,二進位制檔案的讀寫複製也幾乎差不多
"""
讀寫二進位制檔案
version:0.1
author:coke
"""def main():
try:
with open("f:","rb") as f1:
data = f1.read()
print(type(data))
with open("f:","wb") as f2:
f2.write(data)
except exception as e:
print(e)
if __name__ == "__main__":
main()
我們使用python中的json模組就可以將字典或列表以json格式儲存到檔案中,**如下所示。
"""
讀取json檔案
version:0.1
author:coke
"""import json
def main():
mydict = ,]}
try:
with open("f:","w",encoding='utf-8') as fs:
json.dump(mydict,fs)
except ioerror as e:
print(e)
print("儲存資料完成")
if __name__ == '__main__':
main()
json模組主要有四個比較重要的函式,分別是:
import requests
import json
def main():
resp = requests.get("")
data_model = json.loads(resp.text)
print(data_model)
print(data_model['code'])
print(data_model['msg'])
if __name__ == '__main__':
main()
在讀寫檔案的過程中,如果想知道當前的位置,可以使用tell()來獲取
如果在讀寫檔案的過程中,需要從另外乙個位置進行操作的話,可以使用seek()
seek(offset, from)有2個引數
os模組中的rename()可以完成對檔案的重新命名操作,remove()可以完成對檔案的刪除操作
# -*- coding:utf-8 -*-
"""檔案的定位讀寫
version:0.1
author:coke
"""import os
f = open("f:","r")
str = f.read(2)
print(str)
#查詢當前位置
position = f.tell()
print("當前位置:",position)
str = f.read(3)
print(str)
#查詢當前位置
position = f.tell()
print("當前位置:",position)
f.seek(1,0)
position = f.tell()
print("seek完當前位置:",position)
f.close()
#關閉檔案流才可以 進行重新命名和刪除
os.rename("f:","f:")
os.remove("f:")
實際開發中,有時需要用程式的方式對資料夾進行一定的操作,比如建立、刪除等
就像對檔案操作需要os模組一樣,如果要操作資料夾,同樣需要os模組
import os
from time import sleep
#建立資料夾
if not os.path.exists("f://tempdir"):
os.mkdir("f://tempdir")
#獲取當前目錄
currentdir = os.getcwd()
print(currentdir)
print("--------------")
#改變預設目錄
os.chdir("f://")
#獲取預設目錄
defaultdir = os.listdir("./")
print(defaultdir)
#過5秒刪除檔案
sleep(5)
os.rmdir("f://tempdir")
Python基礎 檔案操作
使用 open 能夠開啟乙個檔案,open 的第乙個引數為檔名和路徑 my file.txt 第二個引數為將要以什麼方式開啟它,比如w為可寫方式.如果計算機沒有找到 my file.txt 這個檔案,w 方式能夠建立乙個新的檔案,並命名為 my file.txt 例項 text tthis is m...
python 基礎 檔案操作
開啟 在python,使用open函式,可以開啟乙個已經存在的檔案,或者建立乙個新檔案 open 檔名,訪問模式 示例如下 f open test.txt w 說明 訪問模式說明r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。...
python 基礎 檔案操作
開啟 在python,使用open函式,可以開啟乙個已經存在的檔案,或者建立乙個新檔案 open 檔名,訪問模式 示例如下 f open test.txt w 說明 訪問模式說明r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。...