文件

文件的知識(shí)點(diǎn)

知識(shí)點(diǎn)一.如何打開文件

f = open('demo.txt', 'r', encoding='utf-8')  #以只讀的形式打開

# 讀取文件內(nèi)容  
print(f.read())  
# 關(guān)閉文件
f.close()

另一種方式,使用'w+'模式打開文件,允許讀寫

f = open('demo001.txt', 'w+')  
f.write('hello world')  #寫入  hello world
print(f.tell())  # 輸出當(dāng)前文件指針位置  
f.seek(0)  # 將文件指針移動(dòng)到文件開頭  
print(f.read())  # 讀取文件內(nèi)容  
f.close()  

使用'w+'模式寫入多行

f = open('test2.txt', 'w+')  
print(f.write("hello world\n"))  
print(f.write("hello \nworld"))  
f.close()  

使用'a'模式追加內(nèi)容

f = open('test2.txt', 'a')  
f.write("\npython")  
f.close()  

讀取文件內(nèi)容并寫入到另一個(gè)文件

f1 = open('test2.txt', 'r')  
a = f1.readlines()  
f2 = open('demo001', 'w')  
f2.writelines(a)  #將f2的內(nèi)容寫入f1中
f1.close()  
f2.close()  

使用with語句自動(dòng)管理文件關(guān)閉

with open('test2.txt', 'r') as f3:  f3為一個(gè)對(duì)象 
    print(f3.read())

知識(shí)點(diǎn)二.OS模塊(重要 難點(diǎn))

Python文件路徑與操作筆記

  • 絕對(duì)路徑與相對(duì)路徑
  • 絕對(duì)路徑:從根目錄(或特定參考點(diǎn))開始的! 完整!路徑,例如 E:\class_45\011.文件\os模塊.py。
  • 相對(duì)路徑:相對(duì)于當(dāng)前工作目錄的路徑,例如如果當(dāng)前工作目錄是 E:\class_45,那么 011.文件\os模塊.py 就是相對(duì)路徑。

示例地址

示例地址(相對(duì)路徑):重慶市南岸區(qū) #這是基于你當(dāng)前路徑

示例文件路徑(絕對(duì)路徑):E:\class_45\011.文件\os模塊.py

Python中與路徑操作相關(guān)的模塊

  • os模塊

  • os.getcwd() 顯示當(dāng)前路徑
  • listdir(path) 展示當(dāng)前目錄內(nèi)容
  • os.chdir(path) 改變當(dāng)前路徑
  • os.mkdir(文件名) 創(chuàng)建目錄
  • os.rmdir(文件名) 刪除目錄
  • os.system() 使用Linux命令
  • os.remove(文件名) 刪除文件
  • os.rename 重命名

路徑的拼接

# 正確的路徑拼接方式  
import os  
path = os.path.join('C:', 'Users', 'tongyao')  
print(path)  # 輸出: C:\Users\tongyao  

# b = '\\'.join(['C:Users','tongyao'])  # 錯(cuò)誤的方式

文件夾的創(chuàng)建

import os 
#用循環(huán)批量創(chuàng)建文件夾 
for i in range(20):
     os.mkdir('tongyao'+str(i))
#判斷文件夾是否存在 存在則創(chuàng)建 反之亦然
if not os.path.exists(new_file):  
        os.mkdir(new_file)  #存在則創(chuàng)建

os.chdir(path) 改變當(dāng)前路徑 path為改變的路徑

import os 
os.chdir(path)

os.rmdir(文件名) 刪除目錄

###os.rmdir(path)

os.system(+linux命令) 使用Linux命令 shell 編程

import os 
os.system("ls")

os.remove(文件名) 刪除文件 與rmdir不同

os.rename 重命名

import os 
os.rename(old_file,new_file) # 舊文件名,新文件名
  • os.path 模塊

  • os.path.join(path1,path2......) 路徑拼接
  • os.path.dirname 所在的目錄、父級(jí)目錄
  • os.path.basename 基本短路徑
  • os.path.abspath 絕對(duì)路徑
  • os.path.relpath 相對(duì)路徑
  • os.path.getsize 資源大小
  • os.path.exists 路徑是否存在
  • so.path.isdir 是否是目錄
  • os.path.isfile 是否是文件
  • os.path.isabs 是否是絕對(duì)路徑
  • os.path.getctime、getatime、getmtime 資源時(shí)間:創(chuàng)建、訪問、修改

路徑拼接

  • os.path.join(path1, path2, ...):

該函數(shù)用于將多個(gè)路徑組件合并成一個(gè)路徑。

import os  
path = os.path.join('usr', 'bin', 'python3')  
print(path)  # ,如:
#'usr\\bin\\python3' 

目錄和文件名操作

  • os.path.dirname(path):

返回所選路徑的最后一個(gè)目錄的父目錄。

import os  
dirname = os.path.dirname('/usr/bin/python3')  
print(dirname)  # 輸出: /usr/bin
  • os.path.basename(path):

返回給定路徑的基本名(即最后一級(jí)目錄的文件名)

import os  
basename = os.path.basename('/usr/bin/python3')  
print(basename)  # 輸出: python3

路徑的絕對(duì)與相對(duì) abs 絕對(duì)

  • os.path.abspath(path):

返回給定路徑的絕對(duì)路徑。

import os  
abspath = os.path.abspath('.')  # . 表示當(dāng)前目錄 也可以輸入相對(duì)路徑
print(abspath)  # 輸出當(dāng)前工作目錄的絕對(duì)路徑 
  • os.path.relpath(end path, start path):

返回從start路徑到path的相對(duì)路徑。

import os  
relpath = os.path.relpath('/usr/bin/python3', '/usr')  
print(relpath)  # 輸出: bin/python3

文件和目錄屬性

  • os.path.getsize(path):

返回指定路徑的文件大?。ㄒ宰止?jié)為單位)。

import os  
size = os.path.getsize('/usr/bin/python3')  
print(size)  # 輸出文件大小
  • os.path.exists(path):

檢查路徑是否存在。

import os  
exists = os.path.exists('/usr/bin/python3')  
print(exists)  # 輸出: True 或 False
  • os.path.isdir(path) 和 os.path.isfile(path):

分別檢查給定路徑是否是一個(gè)目錄或文件。

import os  
isdir = os.path.isdir('/usr/bin')  #檢查是否是一個(gè)目錄
isfile = os.path.isfile('/usr/bin/python3')   #檢查是否是一個(gè)文件
print(isdir)  # 輸出: True 或 False  
print(isfile) # 輸出: True 或 False
  • os.path.isabs(path):

檢查路徑是否為絕對(duì)路徑。

import os  
isabs = os.path.isabs('/usr/bin/python3')  #檢查目錄是否有子目錄
print(isabs)  # 輸出: True

文件的時(shí)間屬性

  • os.path.getctime(path)、
  • os.path.getatime(path)、
  • os.path.getmtime(path):

分別返回文件的創(chuàng)建時(shí)間、最后訪問時(shí)間和最后修改時(shí)間(以秒為單位,自紀(jì)元以來的時(shí)間戳)。

import os  
ctime = os.path.getctime('/usr/bin/python3')  
atime = os.path.getatime('/usr/bin/python3')  
mtime = os.path.getmtime('/usr/bin/python3')  
print(ctime) #輸出文件的最后創(chuàng)建的時(shí)間
print(atime) #輸出文件的最后訪問的時(shí)間
print(mtime) # 輸出文件的最后修改的時(shí)間 且時(shí)間為時(shí)間戳

知識(shí)點(diǎn)三:stringIO與bytesIO

  • io Input/Output 輸入,輸出

假的文件 臨時(shí)文件 內(nèi)存中讀數(shù)據(jù)是非??斓?/h4>

io可以臨時(shí)儲(chǔ)存一些東西

------字符串

import io
myio = io.StringIO() # 創(chuàng)建一個(gè)對(duì)象進(jìn)行保存讀取
myio.write('hello')
# myio.seek(0)
print(myio.readlins())
print(myio.getvalue())
臨時(shí)的
myio.close() # 雖然關(guān)閉對(duì)象后,內(nèi)存中的數(shù)據(jù)不會(huì)立即消失(由Python的垃圾回收機(jī)制處理),但良好的實(shí)踐是完成操作后關(guān)閉它。

------字節(jié)

bio = io.BytesIO()
bio.write(b'hahhaha')
print(bio.getvalue()) #輸出:b'hahhaha'   注意此處的b不能少
bio.close() #關(guān)閉bio
byte_str = b'fdsfdsafds'  
text_str = byte_str.decode('utf-8')  
print(text_str)  # 輸出: fdsfdsafds,沒有b前綴
#當(dāng)你看到在Python中打印出的字節(jié)串(如b'fdsfdsafds')時(shí),前綴b是Python解釋器用來區(qū)分字節(jié)串(bytes)和文本字符串(str)的一種方式。這個(gè)b前綴并不是字節(jié)串?dāng)?shù)據(jù)的一部分,它只是在打印或者表示字節(jié)串時(shí)被Python解釋器自動(dòng)添加的。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容