日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

logback-spring.xml 文件路径 相对路径_小白学 Python(18):基础文件操作

發布時間:2024/10/12 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 logback-spring.xml 文件路径 相对路径_小白学 Python(18):基础文件操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

人生苦短,我選Python

前文傳送門

小白學 Python(1):開篇

小白學 Python(2):基礎數據類型(上)

小白學 Python(3):基礎數據類型(下)

小白學 Python(4):變量基礎操作

小白學 Python(5):基礎運算符(上)

小白學 Python(6):基礎運算符(下)

小白學 Python(7):基礎流程控制(上)

小白學 Python(8):基礎流程控制(下)

小白學 Python(9):基礎數據結構(列表)(上)

小白學 Python(10):基礎數據結構(列表)(下)

小白學 Python(11):基礎數據結構(元組)

小白學 Python(12):基礎數據結構(字典)(上)

小白學 Python(13):基礎數據結構(字典)(下)

小白學 Python(14):基礎數據結構(集合)(上)

小白學 Python(15):基礎數據結構(集合)(下)

小白學 Python(16):基礎數據類型(函數)(上)

小白學 Python(17):基礎數據類型(函數)(下)

絕對路徑和相對路徑

在介紹文件操作之前,我們先介紹兩個概念,絕對路徑和相對路徑。

先百度下看下百度的解釋:

  • 絕對路徑:是指目錄下的絕對位置,直接到達目標位置,通常是從盤符開始的路徑。完整的描述文件位置的路徑就是絕對路徑。

  • 相對路徑:相對路徑就是指由這個文件所在的路徑引起的跟其它文件(或文件夾)的路徑關系。

不知各位同學看懂了沒,沒看懂我再舉個栗子給各位加深下理解。

絕對路徑

比如我們要描述?Demo.py?的絕對路徑,那么就是:?F:/project/python-learning/base-data-def/Demo.py?。

相對路徑

相對路徑是描述當前位置相對于目標位置的路徑,比如當前我們存在的路徑是?F:/project/python-learning/?,我們還是要描述上面的那個?Demo.py?,那么它的相對路徑是?./base-data-def/Demo.py?。

打開文件

Python 為我們提供了打開文件的內置函數?open()?。

常用語法:

open(file, mode='r')

完整語法:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

參數說明:

  • file: 必需,文件路徑(相對或者絕對路徑)。

  • mode: 可選,文件打開模式

  • buffering: 設置緩沖

  • encoding: 一般使用 utf-8

  • errors: 報錯級別

  • newline: 區分換行符

  • closefd: 傳入的file參數類型

mode 參數常用值:

模式描述
t文本模式 (默認)。
x寫模式,新建一個文件,如果該文件已存在則會報錯。
b二進制模式。
+打開一個文件進行更新(可讀可寫)。
r以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。一般用于非文本文件如圖片等。
r+打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。一般用于非文本文件如圖片等。
w打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb以二進制格式打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用于非文本文件如圖片等。
w+打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+以二進制格式打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用于非文本文件如圖片等。
a打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
ab以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
a+打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。
ab+以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。

光說不練假把式,下面開啟我們第一個示例:

str1 = open('F:/project/python-learning/base-data-def/Demo.py', mode='r').read()
print(str1)

打印結果我就不貼出來了,正常打印了我們前幾篇文章的示例代碼。

編碼格式

根據編碼格式的不同,可以將文件分為文本字符和二進制字節。

我們日常看到的都是文本字符,但是文本字符在保存計算機的時候都會轉變成二進制字節,這時候,就要考慮到編碼的問題了。

我們看下轉換的示例圖:

值得注意的是,在 Python3 中,文件默認的編碼方式是 UTF-8 ,文本字符的常用的編碼有 ASCII 和 Unicode 。

說了這么多,還是看一個示例代碼吧:

str2 = '好好學習,天天向上'
print(type(str2))
a = str2.encode('utf-8')
print(type(a))
print(a.decode('utf-8'))

打印結果如下:

<class 'str'>
<class 'bytes'>
好好學習,天天向上

可以看到,我們將字符串?encode()?編碼以后,類型變成了?byte?。

如果我們使用編碼?gbk?的方式解碼上面的 a 會怎么樣呢?

print(a.decode('gbk'))

結果如下:

Traceback (most recent call last):
File "F:/project/python-learning/base-file/Demo.py", line 10, in <module>
print(a.decode('gbk'))
UnicodeDecodeError: 'gbk' codec can't decode byte 0x8a in position 26: incomplete multibyte sequence

告訴我們不能使用?gbk?來進行解碼操作。

這個其實很好理解,好比我們將中文翻譯成為了英文(編碼),然后我們通過日文翻譯想要將英文翻譯回中文(解碼),那么這個日文翻譯肯定會罵你腦子有病。

OS 模塊

前面我們介紹了通過內置函數來操作文件,我們還可以通過 OS 模塊更簡單的l哎操作文件。

OS 模塊是和操作系統相關的模塊。

為了演示,先建立一個?test.txt?文件。

首先,我們打開這個文件:

import os
os.chdir('F:/project')
file = open('test.txt')

讀取這個文件并打印:

print(file.read())

結果如下:

微信公眾號:極客挖掘機

然后我們在下面再加一些內容:

file.write('關注公眾號,好好學習,天天向上')

然后發現執行報錯了:

Traceback (most recent call last):
File "F:/project/python-learning/base-file/Demo.py", line 17, in <module>
file.write('關注公眾號,好好學習,天天向上')
io.UnsupportedOperation: not writable

從報錯信息可以看出,是我們當前讀取權限的問題,因為我們讀取時是只讀權限,無法寫入,所以稍微修改下上面讀取文件的代碼:

import os
os.chdir('F:/project')
file = open('test.txt', mode='a+')
file.write(' \n 關注公眾號,好好學習,天天向上')

執行完成后我們再看下我們的測試文件:

寫入成功。

我們測試一個有意思的事情,如果同一個文件我們讀取兩次會怎么樣?

import os
os.chdir('F:/project')
file = open('test.txt')
print(file.read())
print(file.read())

打印結果如下:

微信公眾號:極客挖掘機
關注公眾號,好好學習,天天向上

我們明明在代碼中打印了兩次,為什么只顯示了一次呢?

因為?read()?讀取所有內容,讀取完后,游標是指在最后的,再往后讀取肯定就讀不到內容了。

好了,本篇的內容就到此為止了,希望各位同學能動手練習下示例代碼。

示例代碼

本系列的所有代碼小編都會放在代碼管理倉庫 Github 和 Gitee 上,方便大家取用。

示例代碼-Github:https://github.com/meteor1993/python-learning/tree/master/base-file

示例代碼-Gitee:https://gitee.com/inwsy/python-learning/tree/master/base-file

總結

以上是生活随笔為你收集整理的logback-spring.xml 文件路径 相对路径_小白学 Python(18):基础文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。