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

歡迎訪問 生活随笔!

生活随笔

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

python

Python(28)-文件,os模块

發布時間:2023/12/13 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python(28)-文件,os模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件

  • 1. 文件
  • 2. 文件的基本操作
  • 3. 讀取文件open()
    • 3.1 文件指針: 標記從哪一個位置開始讀取數據.
    • 3.2 文件的打開方式mode
    • 3.3 文件按行讀取
      • 3.3.1 readline()
      • 3.3.2 readlines()
  • 4.文件輸出f.write(),print()
  • 5.文件復制
    • 5.1 小文件復制(搬家)
    • 5.2 大文件復制(搬家)
    • 5.3 shutil.copy()
    • 5.4 shutil.rmtree()
  • 6.os 模塊
    • 6.1 改變工作目錄os.chdir()
    • 6.2 文件重命名os.rename()
    • 6.3 刪除文件os.remove()
    • 6.4 刪除空路徑os.removedirs()
    • 6.5 目錄列表os.listdir()
    • 6.6 創建目錄os.mkdir()
    • 6.7 刪除目錄os.rmdir()
    • 6.8 判斷某個目錄是否存在,如果不在,創建這個目錄
    • 6.9 os.path.split("xxx/xx/xxxx")
    • 6.10 os.path.isdir()
  • 7.CSV文件
  • 8.JSON文件
  • 9.文本文件的編碼方式
  • 10.在Python2.x中使用中文
  • 11.eval()

本系列博文來自學習《Python基礎視頻教程》筆記整理,視屏教程連接地址:http://yun.itheima.com/course/273.html

open 不僅能打開txt文件,還能打開.csv,.JSON 文件。🐂🍺呀。

1. 文件

計算機的文件就是保存在 長期存儲設備 上的一段數據,長期存儲設備包括:硬盤 U盤 移動硬盤 光盤.
文件的作用:將數據長期保存下來,在需要的時候使用.
cpu 要使用 存在硬盤中文件,需要先將文件加載到內存.

常見兩種類型的文件 : 文本文件二進制文件
文本文件 : 可以只用文本編輯軟件查看的 ,如Python源程序 , 本質上還是二進制文件
二進制文件 : 保存的內容不是給人直接看的,而是提供給其他軟件使用的.例如: 圖片文件 音頻文件 視屏文件,等不能直接用文本編輯器查看,要有相應的應用軟件.

2. 文件的基本操作

在計算機中操作文件的固定套路:
1.打開文件
2.讀寫文件:讀-將文件內容加載到內存.寫-將內存內容寫到文件
3.關閉文件

在Python中 常用的操作文件的1個函數,3個方法.

名稱類型說明
f.open()函數打開文件,并返回文件操作對象(文件句柄)
f.read()方法將文件內容讀到內存
f.write()方法將內存內容寫入文件
f.close()方法關閉文件,不關閉會占用系統可打開文件句柄數

open函數打開文件,并返回文件操作對象,后面的三個方法通過 文件對象 來調用.

文件句柄的其他方法

方法說明
f.flush()刷新輸出緩存
f.read([count])指定讀出count個字節的文件內容
f.readline()讀出一行信息
f.readlines()讀出所有行信息
f.seek(offset[,where])從where開始移動文件指針offset個單位,where=0文件開始處,1當前位置,2文件結尾
f.tell()獲得文件指針的位置
f.writelines(list)把list中的字符串一行一行寫入文件,連續寫入文件,沒有換行

3. 讀取文件open()

open函數 的第一個參數是 要打開的文件名(要帶擴展名). 如果文件存在,返回文件操作對象,如果文件不存在,會拋出異常.
read方法可以一次性 讀入并返回文件的所有內容
如果忘記關閉文件,會造成資源浪費,和后續操作困難所以打開之后,應該寫關閉語句,然后再去寫讀寫操作語句

# 1.打開文件 file=open("test.txt")# 2.讀取文件內容 text=file.read() print(text)# 3.關閉文件,如果忘記關閉文件,會造成資源浪費,和后續操作困難所以打開之后,應該寫關閉語句,然后再去寫讀寫操作語句 file.close()

3.1 文件指針: 標記從哪一個位置開始讀取數據.

第一次打開文件時,文件直至會指向 文件的開始位置.
執行read方法后,文件指針會指向 讀取內容的末尾

注意:如果執行了一次read方法,讀取了所有內容,再次調用 read方法時,不能夠讀取文件內容了. 因為第一次讀取后,文件指針移動到了文件末尾.

# 1.打開文件 file=open("test.txt")# 2.讀取文件內容 text=file.read() print(text) print(len(text))print("-"*50) text=file.read() print(text) print(len(text))# 3.關閉文件,如果忘記關閉文件,會造成資源浪費,和后續操作困難所以打開之后,應該寫關閉語句,然后再去寫讀寫操作語句 file.close()

輸出:

hello python hallo19 --------------------------------------------------0

實際上并沒有說如何解決這個問題,或者進一步操作

3.2 文件的打開方式mode

file=open(“文件名.擴展名”,“打開方式”)

打開文件的方式:open 函數需要傳遞的第二個參數.如果不指定打開方式,默認以只讀方式 打開,并返回文件對象

打開方式說明
r只讀方式打開,文件指針在文件頭
w只寫方式打開,如果文件存在會覆蓋, 如果文件不存在創建新的文件
a(append)追加方式打開,文件指針在文件尾. 如果文件不存在創建新的文件
r+讀寫方式打開,文件指針在文件頭
w+讀寫方式打開,如果文件存在會覆蓋, 如果文件不存在創建新的文件
a+讀寫方式打開,文件指針在文件尾. 如果文件不存在創建新的文件

讀寫方式打開,頻繁操作文件指針,會影響文件讀寫效率.開發時,更多會以只讀 或者只寫 的方式來操作文件.

3.3 文件按行讀取

3.3.1 readline()

read 方法會把文件的所有內容都讀入到內存,如果文件太大,會使得內存占用率非常高.可以改用逐行讀取的方法.readline()方法可以一次讀取一行內容,方法執行后會把文件指針移動到下一行.
代碼示例:

file=open("test.txt") while True:text=file.readline()print(text)# 判斷是否讀到內容if not text:breakfile.close()

3.3.2 readlines()

data = [] data1 = [] fr = open("readline_test.txt") for line in fr.readlines():line = line.strip() # 去掉字符串開頭或者結尾的空白符,包括換行符data_line = line.split(",") # 使用","分割數據并返回一個列表data_line1 = list(map(int, line.split(",")))data.append(data_line)data1.append(data_line1)print(data) print(data1) fr.close()

4.文件輸出f.write(),print()

f = open("outpu.txt", "w") # 沒有文件的話會新建一個 data = [['1', '2'], ['3', '4']] line1 = ','.join(data[0]) f.write(line1 + '\n') line2 = ','.join(data[1]) f.write(line2 + '\n')# print 把原本輸出到shell 的內容改輸到文件中 data = [[1, 2], [3, 4]] for line in data:print(str(line[0]) + ',' + str(line[1]), file=f)

output.txt文件的內容

1,2 3,4 1,2 3,4

5.文件復制

5.1 小文件復制(搬家)

打開兩個文件-讀取原文件內容-寫入目標文件-關閉兩個文件。

打開文件:原文件默認以只讀的方式打開,目標文件以只寫"w"的方式打開,如果沒有目標文件,會新建一個目標文件。

代碼實例:

# 1.打開文件 file_read=open("readme.txt") file_write=open("readme_copy.txt","w") # 2.讀取操作 text=file_read.read() file_write.write(text) # 3.關閉 file_read.close() file_write.close()

5.2 大文件復制(搬家)

一次性讀取會給內存造成巨大的壓力,可以使用按行讀取與寫入來實現這個功能。

# 1.打開文件 file_read=open("readme.txt") file_write=open("readme_copy.txt","a")# 2.讀取操作,按行操作 while True:text=file_read.readline()if not text:breakfile_write.write(text) # 從頭開始寫是文件指針的問題,設定在本頁的結尾打開,如一追加的方式加原文件的內容到新文件。# 3.關閉 file_read.close() file_write.close()

5.3 shutil.copy()

import shutil
shutil.copy(文件1,文件2)

對文件1的內容和權限都進行copy。

5.4 shutil.rmtree()

刪除一個文件夾(如果文件夾里面有文件也會一起被刪掉)比較6.3中的刪除。

shutil.rmtree(’./cyy_test/subtest2’)

6.os 模塊

文件/目錄的常用管理操作
終端或者文件瀏覽器中可以執行的常規操作。例如:創建,重命名,刪除,改變路徑,查看目錄內容等。通過Python實現上述功能,需要導入os模塊。

6.1 改變工作目錄os.chdir()

使用腳本運行,默認的工作目錄為腳本所在的目錄中??梢允褂胏hdir 改變工作目錄

import os print(os.getcwd()) # linux 命令行使用pwd來輸出當前路徑 os.chdir("/Users/chenyingying") print(os.getcwd())

輸出

/Users/chenyingying/PycharmProjects/DataMining_python /Users/chenyingying

6.2 文件重命名os.rename()

os.rename(源文件名.擴展名,目標文件名.擴展名)

6.3 刪除文件os.remove()

os.remove(文件名.擴展名)

demo:刪除文件而保留目錄結構

import os g=os.walk('/home/abc/Desktop/cyy_test') for path,dir,files in g: #路徑path 文件夾中的文件名files和文件夾名dir(都是list)print(path,dir,files)while files!=[]:for file in files:print(file)os.remove(os.path.join(path,file))files.remove(file) print('end')

由頂至下的遍歷所有文件夾

6.4 刪除空路徑os.removedirs()

刪除一個空文件夾,如果文件夾里有文件,或者文件夾是刪除不成功的。

os.removedirs(’./cyy_test/subtest123’)

刪除一個非空路徑(如果文件夾里面有文件也會一起被刪掉)

shutil.rmtree(’./cyy_test/subtest2’)

6.5 目錄列表os.listdir()

os.listdir(目錄名)
os.listdir(".") # 查看當前目錄的目錄列表

6.6 創建目錄os.mkdir()

os.mkdir(“目錄名”)

6.7 刪除目錄os.rmdir()

os.rmdir(”目錄名“)

6.8 判斷某個目錄是否存在,如果不在,創建這個目錄

import os log_path = os.getcwd() + '/Logs/' #當前文件夾下的Logs文件夾if not os.path.exists(log_path) : #判斷文件夾或文件os.makedirs(log_path) #創建

參考資料:https://blog.csdn.net/xielifu/article/details/81013536

6.9 os.path.split(“xxx/xx/xxxx”)

將路徑分割出來,一次分割一個級別,每次分割得到兩個元素的tuple.

>>> import os >>> a=os.getcwd() >>> a '/home/pp/Desktop/testsplit/aaa/bbb'>>> a=os.getcwd()+"/1.txt" >>> a '/home/pp/Desktop/testsplit/aaa/bbb/1.txt'>>> b=os.path.split(a) >>> b ('/home/pp/Desktop/testsplit/aaa/bbb', '1.txt')>>> c=os.path.split(b[0]) >>> c ('/home/pp/Desktop/testsplit/aaa', 'bbb')

6.10 os.path.isdir()

目錄名:要查看的目錄的名字。確定目錄列表中的字符串為一個目錄,而不是一個文件。返回的True或者False。

os.path.isdir(“xxx”)

先判斷路徑是否存在,不存在就創建該路徑

if not os.path.isdir(tarDir): os.makedirs(tarDir)

7.CSV文件

excel 格式的數據,將文件存成csv。以逗號作為文件分割符號。

f=open(‘data.csv’)
import pandas
data = pandas.read_csv()

8.JSON文件

保存字典格式的數據,將文件存成JSON 的格式。借助json模塊實現序列化和反序列化
序列化:字典格式-》字符串 json.jumps()
反序列化:字符串-》字典格式 json.loads()
不帶s的 json.jump()保存json文件,json.load()導入json文件

import json x = {"height": 176,"weight": 60} print("原x", x) y = json.dumps(x) # 轉化為字符串 print("序列化x", y) x = json.loads(y) print("反序列化x", x)f = open("json_test.json", 'w') json.dump(x, f) f.close()f = open("json_test.json", 'r') print("從文件讀取到的json", json.load(f))

輸出

原x {'height': 176, 'weight': 60} 序列化x {"height": 176, "weight": 60} # 三者的區別并不大 反序列化x {'height': 176, 'weight': 60} 從文件讀取到的json {'height': 176, 'weight': 60}

9.文本文件的編碼方式

文本文件存儲的內容是基于字符編碼的文件,常見的編碼有ASCIIUNICODE編碼。
Python2.x默認使用ASCII 編碼
Python3.x 默認使用UTF-8編碼

Ascii編碼:計算機中只有25個ASCII 字符,一個ASCII在內存中占一個字節(8位,256種組合方式)
UTF-8編碼:使用1-6個字節來表示一個字符,涵蓋了地球上幾乎所有地區的文字。大多數漢字會使用三個字節表示。UTF-8 是UNICODE編碼的一種編碼格式。

10.在Python2.x中使用中文

希望Python2.x 解釋器以UTF-8的方式解析文件,需要在Python2.x的開頭使用一下代碼,解釋器會以UTF-8編碼來處理Python文件.
官方推薦:

# *-* coding=utf-8 *-*

也可以寫:

# coding:utf8

在Python2.x中,帶有中文與英文混合的字符串需要在字符串的開頭寫一個u,來告訴編譯器這是一個utf8編碼的字符串.

a=u"hello 世界"

11.eval()

eval 函數會將字符串當成 有效表達式 來 求值 , 并返回計算結果.

簡單案例:計算器.要求用戶輸入一個 加減乘除混合運算,程序返回一個計算結果

input_str=input("請輸入算術題") print(eval(input_str))# 輸入:(1+3)*5 # 輸出:15 完全不需要解析表達式中的內容,自動轉換計算.

注意事項:
在開發時,千萬不要使用eval()直接轉換**input()**的結果
在控制臺上輸入以下命令,會直接執行任何的終端命令

import(“os”).system(“ls”)

import os print(os.path.exists("cyy_test*")) # 不能使用通配符 print(os.path.exists("cyy_test1.py"))

總結

以上是生活随笔為你收集整理的Python(28)-文件,os模块的全部內容,希望文章能夠幫你解決所遇到的問題。

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