程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python-持久化存儲文件操作

編輯:Python

一、文件的基本操作

# 1. 打開文件
"""
mode:
r: 只能讀文件
w: 只能寫入(先清空文件內容)
a+: 讀寫(文件追加寫入內容)
r+:讀寫(文件開頭寫入內容)
"""
f = open('doc/hello',mode='r+')
# 2. 文件讀寫操作
f.write('javaaaaa\n')
# 3. 關閉文件
f.close()


對上圖做一個 解釋:
常用的mode有 r、w、a
r: r是讀操作,默認就有。(但是當mode變成其他類型時 就不一定了)
w:涉及w的mode,無論是w還是w+,都會先清空文件中的內容
a: a算是最溫和的mode了,他不會清空文件中的內容。但是沒有讀權限。
+:a+和r+都有讀寫操作。

二、文件操作中的with語句

由上述可知,在對文件進行open及讀寫操作後,最後要使用close關掉它,釋放資源。
這裡就牽扯到文件的關閉:
方法一: 調用close()方法關閉文件。文件使用完畢後必須關閉,因為文件對象會占用操作系統的資源,
並且操作系統同一時間能打開的文件數量也是有限的:

方法二: Python引入了with語句自動幫我們調用close()方法:

下面有兩段代碼理解一下:
示例一:

with open('doc/test',mode='w+') as f:
f.write('javavaaaa\n')
print(f.read())

這裡的結果為空,就是print讀取不到結果,為什麼呢?
因為涉及到指針,當把javavaaaa添加進文件中後,指針指向了最後一個字符,他之後當然什麼都沒有,所以才輸出為空。

最後 對上述做一個總結:

with open('doc/test',mode='w+') as f:
f.write('java\n')
f.seek(0,0)
print('當前指針的位置:',f.tell())
f.seek(0,2)
print('當前指針的位置:',f.tell())
print(f.read())

seek(offset, from)有2個參數: offset:偏移量 from:方向
0:表示文件開頭;
1:表示當前位置;
2:表示文件末尾

三、os模塊

os,語義為操作系統,處理操作系統相關的功能,可跨平台。 比如顯示當前目錄下所有文件/刪除某個文件/獲取文件大小……

import os
import platform
# 1. 獲取操作系統類型
print(os.name)
# 2. 獲取主機信息,windows系統使用platform模塊, 如果是Linux系統使用os模塊
"""
try: 可能出現報錯的代碼
excpt: 如果出現異常,執行的內容
finally:是否有異常,都會執行的內容
"""
try:
uname = os.uname()
except Exception:
uname = platform.uname()
finally:
print(uname)
# 3.獲取系統的環境變量
envs = os.environ
# os.environ.get('PASSWORD')
print(envs)
#4. 判斷是否為絕對路徑以及生成絕對路徑
print(os.path.isabs('D:\Program Files\pycharm\自動化運維項目\day04'))
print(os.path.isabs('day05'))
print(os.path.abspath('day06'))
# 5. 目錄名和文件名拼接
# os.path.dirname獲取某個文件對應的目錄名
# __file__當前文件
# join拼接, 將目錄名和文件名拼接起來。
print(os.path.dirname(__file__)) ##獲取當前文件的絕對路徑
print(os.path.basename(__file__)) ## 獲取當前文件名
BASE_DIR = os.path.dirname(__file__)
setting_file = os.path.join(BASE_DIR,'hellooo.conf')
print(setting_file)

四、json模塊

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。

python類型數據和JSON數據格式互相轉換規則

import json
# 1. 將python對象編碼成json字符串
users = {'name':'westos', "age":18, 'city':'西安'}
json_str = json.dumps(users)
with open('doc/hello.json', 'w') as f:
# ensure_ascii=False:中文可以成功存儲
# indent=4: 縮進為4個空格
json.dump(users, f, ensure_ascii=False, indent=4)
print("存儲成功")
print(json_str, type(json_str))
# 2. 將json字符串解碼成python對象
with open('doc/hello.json') as f:
python_obj = json.load(f)
print(python_obj, type(python_obj))

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved