tft每日頭條

 > 科技

 > python創建文件并指定編碼

python創建文件并指定編碼

科技 更新时间:2024-08-09 16:33:50

python創建文件并指定編碼?大家好,我是JieJie編程路上一個人可能走的更快,但一群人才能走得更遠,關注JieJie一起學習不迷路今天分享的是 python中與文件、目錄有關的操作, 以及編碼格式相關的知識 ,話不多說,秃頭走起,下面我們就來聊聊關于python創建文件并指定編碼?接下來我們就一起去了解一下吧!

python創建文件并指定編碼(Python第八篇編碼格式)1

python創建文件并指定編碼

前言

大家好,我是JieJie!編程路上一個人可能走的更快,但一群人才能走得更遠,關注JieJie一起學習不迷路!今天分享的是 python中與文件、目錄有關的操作, 以及編碼格式相關的知識 ,話不多說,秃頭走起

一、文件及目錄操作

1.編碼格式介紹

大部分情況下我們學習編碼格式都是為了解決中文亂碼的問題。

常見的字符編碼格式:

Python的解釋器使用的是Unicode(内存)

.py文件在磁盤上默認使用UTF-8存儲(外存),可通過記事本打開文件,然後另存為就能看到了

在程序前加**#encoding=gbk**,我們就能更改編碼為ANSI,不同的編碼格式文件的大小是不一樣的。

2.文件的讀寫原理

文件的讀寫俗稱"IO操作"(input/output);IO的原理為隊列,先進先出,先讀入的數據流先寫出。

從外到内存為讀,從内存到外為寫。

讀寫操作流程:

操作原理:

.py文件通過解釋器向操作系統發出申請,操作系統讀寫磁盤上的文件。

3.文件讀寫操作

通過IO流将磁盤文件中的内容與程序中的對象的内容進行同步。

使用内置函數open()創建文件對象語法:

這裡要注意.txt文件的編碼格式默認為gbk,.如果文本的編碼格式不是GBK應該改一下;

4.常用的文件打開模式

文件的類型

按照文件中數據的組織形式,文件分為:

文本文件:

存儲的是普通的字符文本,默認為unicode字符集,可以使用記事本打開;

二進制文件:

把數據内容用字節進行存儲,無法用記事本打開,必須使用專門的軟件,一般來說,音頻、圖片都是二進制文件。

打開模式

打開模式

說明

r

以隻讀模式打開文件。文件的指針将放在文件的開頭

w

以隻寫模式打開文件,如果文件不存在則創建,文件指針在文件開頭;如果文件存在,則覆蓋原有内容,文件指針在文件的開頭

a

以追加模式打開,如果文件不存在則創建,文件指針在文件開頭;如果文件存在,則在文件末尾追加内容,文件指針在原文件末尾。

b

以二進制方式打開,不能單獨使用,需要與其他模式一起使用,rb/wb

以讀寫方式打開,不能單獨使用,需要與其他模式一起使用,如a

file=open('a.txt','r') #打開文件,r為隻讀模式? print(file.readlines()) #将文件中内容輸出在列表中 file.close() #關閉資源 file=open('a.txt','w') file.write('永遠的神') file.close() file=open('a.txt','a') file.write('永遠的神') file.close() file=open('a.txt','a') file.write('永遠的神') file.close()

我們用二進制的方式讀取一張照片并寫在另一個.png文件裡(即複制照片)

5.文件對象常用的方法

注意:文件中寫入數據的時候,python并不會立刻寫入,而是會寫到緩沖區,等待清空的時候寫入,用flush可以将緩存區内容寫入文件并清空緩存,從而達到不用close文件就能寫入文件。清空之後無論使用多少次write都會在文件末尾寫入而不是重新覆蓋。 close之後不能再寫内容,flush可以。

6.with語句(上下文管理器)(***)

with語句可以自動管理上下文資源,不論什麼原因跳出with塊,都能确保文件正确的關閉,以此來達到釋放資源的目的。

with open('a.txt','r') as file: print(file.read())

這樣寫,我們就不用手動close文件了。下面來看看具體的語法:

什麼是上下文管理器?

一個類對象,如果實現了__enter__()和__exit__()方法,稱此類對象遵守上下文管理協議,而類對象的實例對象稱為上下文管理器。

這裡的open是一個類,那麼open括号裡的内容就是一個上下文管理器。

#with語句實現圖片的複制 with open ('photo.png','rb') as src_file: with open ('copyphoto.png','wb') as target_file: target_file.write(src_file.read())

7.目錄操作

os模塊是内置的與操作系統功能和文件系統相關的模塊,該模塊中的語句的執行結果通常與操作系統有關,在不同的操作系統上運行,得到的結果可能不同。

os模塊與os.path模塊用于對目錄或者文件進行操作

對操作系統功能進行操作:

import os #os.system('notepad.exe') #打開記事本 #os.system('calc.exe') #打開計算器 #直接調用可執行文件 os.startfile('C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\qq.exe') #打開QQ

對文件目錄進行操作

os模塊的使用

import os print(os.getcwd()) #輸出當前工作目錄 lst=os.listdir('demom.py') #(./文件名)表示回退兩個目錄 print(lst) os.mkdir('newdir1') #創建目錄 os.makedirs('a/b/c') #創建多級目錄 os.rmdir('newdir1') #删除目錄 os.removedirs('a/b/c') #删除多級目錄 os.chdir('C:\\Users\\27101\\Desktop\\demom.py') #将目錄設置為當前工作目錄 print(os.getcwd())

os.path模塊的使用

import os.path print(os.path.abspath('demo2.py')) #顯示文件的絕對路徑 print(os.path.exists('demo2.py'),os.path.exists('demo22222.py')) #文件是否存在 print(os.path.join('D:\\cs','demo2.py')) #拼接路徑 print(os.path.split('C:\\Users\\27101\\Desktop\\demom.py')) #将路徑與文件名分開 print(os.path.splitext('demo2.py')) #将文件名與擴展名分開 print(os.path.basename('C:\\Users\\27101\\Desktop\\demom.py')) #提取文件名 print(os.path.dirname('C:\\Users\\27101\\Desktop\\demom.py')) #提取路徑 print(os.path.isdir('C:\\Users\\27101\\Desktop\\demom.py\\demo2.py')) #結果是否為目錄,demo2為一個文件

結果如下:

最後以兩個例子結尾:①輸出指定目錄下的所有.py文件

#輸出指定目錄下的所有.py文件 import os path=os.getcwd() lst=os.listdir(path) for filename in lst: if filename.endswith('.py'): #以.py結尾的 print(filename)

通常在辦公自動化等的時候需要對excel等文件進行批量處理時會用到這種目錄操作。

②遞歸遍曆一個文件夾中所有的目錄

#遍曆一個文件夾下所有的文件及目錄 import os path=os.getcwd() lst_file=os.walk(path) #walk()方法獲得目錄下所有文件,返回元組 for dirpath,dirname,filename in lst_file: print(dirpath) print(dirname) print(filename) print('________________________') for dir in dirname: print(os.path.join(dirpath,dir)) #将路徑與目錄連接 print('----------------------------------------------') for file in filename: print(os.path.join(dirpath,file)) #将路徑與文件名連接

總結

今日分享到此結束,由于筆者還在求學之路上輾轉徘徊,水平有限,文章中可能有不對之處,還請各位大佬指正,祝願每一個熱愛編程的人都能實現追求,考研上岸進大廠,熬夜秃頭卷中王。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved