檔案的作用
不僅⼈的⼤腦會遺忘事情,計算機也會如此,⽐如⼀個程式在運⾏過程中⽤了九⽜⼆⻁之⼒終於計算出了結果,試想⼀下如果不把這些資料存放起來,相⽐重啟電腦之後,「哭都沒地⽅哭了」 可⻅,在把資料儲存起來有做麼⼤的價值 。
使⽤⽂件的⽬的:就是把⼀些儲存存放起來,可以讓程式下⼀次執⾏的時候直接使⽤,⽽不必重新製作⼀份,省時省⼒ 。
檔案的開啟與關閉
1. 開啟⽂件
在python,使⽤open函式,可以開啟⼀個已經存在的⽂件,或者建立⼀個新⽂件open(⽂件名,訪問模式)
示例如下:# w 寫⼊模式 r 讀取模式
f = open('a.txt', 'w')
訪問模式 說明:
r 只⽤於讀取, 預設模式。⽂件不存在,會報錯。
w 只⽤於寫⼊。⽂件存在則先清空內容, ⽂件不存在,建立新⽂件。
a 只⽤於寫⼊。⽂件存在則追加內容, ⽂件不存在,建立新⽂件。
r+ ⽤於讀寫。⽂件不存在,會報錯。
w+ ⽤於讀寫。⽂件存在則先清空內容, ⽂件不存在,建立新⽂件。
a+ ⽤於讀寫。⽂件存在則追加內容, ⽂件不存在,建立新⽂件。
rb ⼆進製格式的唯讀操作。後續⽹絡課程中具體講解。
wb ⼆進製格式的只寫操作。後續⽹絡課程中具體講解。
ab ⼆進製格式的追加操作。後續⽹絡課程中具體講解。
2. 關閉⽂件close( )
示例如下:# 新建⼀個⽂件,⽂件名為:123.txt
f = open('123.txt', 'w')
# 關閉這個⽂件
f.close()
3.自動關閉檔案
檔案操作往往需要開啟,處理,關閉,如果忘記關閉,就會占用資源造成浪費。python為我們提供with 命令,幫助我們在處理檔案後自動進行關閉**。
with如何工作?緊跟with後面的語句被求值後,返回物件的'__enter__()'方法被呼叫,這個方法的返回值將被賦值給as後面的變數.
當with後面的**塊全部執行完之後,將被呼叫前面返回物件的__exit__()方法.
with原理示例:# -*- coding: utf-8 -*-
# 自定義 context manager
class file(object):
def __init__(self, filename, mode):
# 設定文字名與開啟方式
self.filename = filename
self.mode = mode
# 資源配置
def __enter__(self):
print("開啟文字:" + self.filename)
self.open_file = open(self.filename, self.mode)
return self.open_file
# 資源**(關閉文字)
def __exit__(self, type, value, trace):
print("關閉文字:" + self.filename)
self.open_file.close()with使用方式with open("123.txt", "w") as f:
pass # 執⾏完縮排**, 會⾃動關閉⽂件
檔案的讀寫
1. 寫資料(write)# 使⽤write()可以完成向⽂件寫⼊資料
# 開啟⽂件 w write 寫⼊ r read 讀取
f = open("123.txt", "w")
# 寫⼊資料
f.write("hello world")
# 關閉⽂件
f.close()
2. 讀資料(read)# read(n) n為讀取的字元數, 不設定則全部讀取
with open("123.txt", "r") as f:
content = f.read()
3. 讀資料(readline)readline() 每次讀取⼀⾏資料
with open("123.txt", "r") as f:
content = f.readline()
print(content, end="")
4. 讀資料(readlines)readlines() ⼀次全部讀出, 返回列表 (每⾏內容是⼀個元素)
with open("123.txt", "r") as f:
content = f.readlines()
print(content)
檔案的定位讀寫
⽂件的讀寫都會改變⽂件的定位
f.tell() 可以檢視⽂件的當前定位
f.seek(offset, whence)offset 基於whence做偏移
whence 0 移動定位到⽂件開頭 1定位不變 2移動定位到⽂件結尾
只能對⽂件開頭設定偏移(whence=1或者2時,offset只能為0)with open("123.txt", "w+") as f:
# 檢視⽂件的當前定位
# print(f.tell())
f.write("hello python")
# print(f.tell())
# 改變⽂件的定位 先移動定位到⽂件開頭,再將定位向後移動2個位元組
f.seek(2, 0)
content = f.read()
print("讀取的內容為%s" % content)
檔案的相關操作
有些時候,需要對⽂件進⾏重新命名、刪除等⼀些操作,python的os模組中有這些功能
1. ⽂件重新命名
os模組中的rename()可以完成對⽂件的重新命名操作rename(需要修改的⽂件名, 新的⽂件名)import os
os.rename("畢業論⽂.txt", "畢業論⽂-最終版.txt")
2. 刪除⽂件
os模組中的remove()可以完成對⽂件的刪除操作remove(待刪除的⽂件名)import os
os.remove("畢業論⽂.txt")
3. 建立⽂件夾import os
os.mkdir("張三")
4. 獲取當前⽬錄import os
os.getcwd()
5. 改變預設⽬錄import os
os.chdir("test") # 跳轉到當前路徑的test⼦⽬錄中
6. 獲取⽬錄列表import os
os.listdir()
7. 刪除⽂件夾import os
os.rmdir("張三")
⽬錄⾮空不能使⽤,可以使⽤遞迴的⽅式進⾏刪除
python 如何呼叫py檔案
方法1 from file in import myfunc 方法2 import file in file in.myfunc arg 函式呼叫 demo.py folder a init py file1.py現需要在demo.py中呼叫file1.py檔案,方法如下 方法1 foldera資料...
python中跨檔案引入 py檔案
在本地可以通過在pycharm裡將檔案目錄調整為sources root實現。但在伺服器裡,需要通過如下方式跨檔案呼叫.py檔案。程式結構如下 src mod1.py test1.py 若在程式test1.py中匯入模組mod1,則直接使用 import mod1 或from mod1 import...
python的 py檔案如何生成
1.用輔助軟體生成 在安裝完python3.5或者python2.7之後,還得安裝輔助工具。輔助輔助工具可以選擇vs visual studio pycharm ipython wing pyscripter spyder等。pyscripter與vs2015社群版是免費的 spyder有類似於ma...