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

歡迎訪問 生活随笔!

生活随笔

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

python

Python全栈工程师(文件操作、编码)

發布時間:2024/8/26 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python全栈工程师(文件操作、编码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

ParisGabriel 每天堅持手寫??一天一篇? 決定堅持幾年 為了夢想為了信仰 ?

                      Python人工智能從入門到精通

?

?

?

最近簡直要死了 發燒感冒 喉嚨痛。。。。、

?


如何長期保存計算機中數據:
需要文件操作

  文件 file:
    文件是用于數據存儲的單位
    文件通常用來長期儲存數據
    文件中的數據以字節為單位進行順序儲存
文件的操作流程:
  1.打開文件
  2.讀/寫文件
  3.關閉文件
  注:
    任何操作系統, 一個應用程序同時打開文件數量有最大數
文件打開函數:
  open(file, mode=‘rt’) 用于打開一個文件, 返回此文件流對象,
  如果打開文件失敗, 則會觸發osError錯誤
文件的關閉方法:
  F.colse() #關閉問津 釋放系統資源

示例:

# 此示例示意文件的打開和關閉操作 try:f = open('./aaa.txt') # 不存在此文件# f = open('./myfile.txt') # 不存在此文件print("打開文件成功")# 此處要進行讀/寫操作 f.close() # 半閉文件 except OSError:print("文件打開失敗")

文件方法:

文件

mode 模式字符的含義

字符含義
'r'以只讀方式打開(默認)
'w'以只寫方式打開,刪除原有文件內容(如果文件不存在,則創建該文件并以只寫方式打開)
'x'創建一個新文件, 并以寫模式打開這個文件,如果文件存在則會產生"FileExistsError"錯誤
'a'以只寫文件打開一個文件,如果有原文件則追加到文件末尾
'b'用二進制模式打開
't'文本文件模式打開 (默認)
'+'為更新內容打開一個磁盤文件 (可讀可寫)
  • 缺省模式是 'rt'
  • 'w+b' 可以實現二進制隨機讀寫,當打開文件時,文件內容將被清零
  • 'r+b' 以二進制讀和更新模式打開文件,打開文件時不會清空文件內容
  • 'r+' 以文本模式讀和更新模式打開文件,打開文件時不會清空文件內容

python 文件常用方法:

方法說明
F.close()關閉文件(關閉后文件不能再讀寫會發生ValueError錯誤)
F.readline()讀取一行數據, 如果到達文件尾則返回空行
F.readlines(max_chars=-1)返回每行字符串的列表,max_chars為最大字符(或字節)數
F.writelines(lines)將字符串的列表或字符串的列表中的內容寫入文件
二進制文件操作方法?
F.read(size=-1)從一個文件流中最多讀取size個字符(文本文件)或字節(二進制文件),如果不給出參數,則默認讀取文件中全部的內容并返回
F.write(text)寫一個字符串到文件流中,返回寫入的字符數(文本文件)或字節數(二進制文件)
F.tell()返回當前文件流讀寫指針的絕對位置(字節為單位)
F.seek(offset, whence=0)改變數據流讀寫指針的位置,返回新的絕對位置
F.flush()把寫入文件對象的緩存內容寫入到磁盤
??
F.readable()判斷這個文件是否可讀,可讀返回True,否則返回False
F.writable()判斷這個文件是否可寫,可寫返回True,否則返回False
F.seekable()返回這個文件對象是否支持隨機定位
F.truncate(pos = None)剪掉 自pos位置之后的數據,返回新的文件長度

?


文本文件操作:
  操作模式:
  ‘t’
  說明:
    1.默認文件儲存的都為字節數據, 在讀寫過程會自動進行編解碼操作
    2.文本文件以行位單位進行分割, 在python內部統一用"\n"做為換行符進行分割
    3.對文本文件的讀寫操作需要用字符串(str)進行數據操作
Linux換行符: '\n'
Windows 換行符: '\r\n'
新的Mac OS 換行符: '\n'
舊的Macintosh換行符: '\r'(已不用了)

?

文件流對象是可迭代對象, 迭代過程中將換行符“\n”作為分隔符

f = open('phonenumber.txt')for line in f:print(line) # 打印每一行的數據

?

標準輸入輸出文件:
  sys.stdin    標準輸入文件
  Ctrl + D  ? ? 輸入文件結束符
  sys.stdout  ??標準輸出文件
  sys.stderr? ? ? ?標準錯誤輸出文件
  標準文件絕對不能關閉
Linux系統內所有的硬件都會映射成文件 關閉文件會導致錯誤
模塊:sys
注:
  標準文件不需要打開和關閉就可以使用
示例:

import syssys.stdout.write("我是標準輸出\n") sys.stderr.write("我是一個錯誤\n")import syss = sys.stdin.read() print("s=", s)print("程序結束")

?

二進制文件操作:
  二進制文件操作模式字符:‘b’
  默認文件中存儲的是以字節數據為單位通常有人為規定格式
  二進制文件操作需要用字節串進行讀寫
  F.read()/F.readline() F.readlines()返回類型
對于文本操作
  F.write() 對于二進制文件也需要用字節串進行操作
  F.tell
  作用:
    返回當前的讀寫位置(從文件頭以字節為單位)
  F.seek方法:
    F.seek(偏移量,whence=相對位置)
  偏移量
    大于0的數代表向文件尾方向移動的字節數
    小于0的數代表向文件頭方向移動的字節數
  相對位置
    0代表從文件頭開始偏移
    1代表從文件當前位置開始偏移
    2代表從文件尾開始偏移 (第一個參數必須是負的)
示例:

# 此示例示意用seek改變文件的讀寫位置,用tell來得到讀寫位置 f = open('myseek.txt', 'rb') b = f.read(2) # b'AB' 讀取出來 print(b) # b'AB# 從頭開始向后走5個字節 # f.seek(5, 0)# 從當前位置向后走3個字節 # f.seek(3, 1)# 從文件尾向前數15個字節 f.seek(-15, 2)b = f.read(5) print(b) # b'abcde' f.close()

?

漢字編碼(只講兩種)
  國標系列:
    GB18030(二字節或四字節編碼27553個字)
    GBk二字節編碼21003個字)
    GB2312二字節編碼6763個字)
    (Windows 常用)
  國際標準Unicode <---> UTF-8 (Ascii 占1字節 漢字占3字節)
    (Linux Mac OS X / IOS /Android)
    python編碼字符串:
    ‘gb18030’
    ‘gb2312’
    ‘gbk’
    ‘utf-8’
    ‘ascii’
    ....
以上字符串用于encidedecode
編碼注釋:
  在Python源文件中的第一行第二行寫入如下內容:
    # -*- codeing:gbk -*-
    #設置源文件編碼格式為gbk
    或
    # -*- codeing:utf-8 -*-
    #設置源文件編碼格式為utf-8
  作用:
    告訴解釋執行器文件的編碼是什么

?

練習:
自己寫一個文件 'info.txt' 內部存一些文字信息
如:
張三 20 100
李四 21 96
小王 22 98
寫程序將這些數據讀取出來,打印到終端上

答案:

try:f = open("myfile.txt")L = f.readlines()for x in L:s = x.strip()n, a, s = s.split()print("姓名:", n, "年齡:", int(a), "成績:", int(s)) except:print("打開文件是失敗")

練習:
1. 寫程序,循環輸入很多個人的姓名,電話號碼,
當輸入結束后將這些信息存入到文件phonenumber.txt中
(建議先用列表暫存數據,格式自己定義)

  2. 寫程序,將phonenumber.txt文件中的數據讀取出來.
     再用以下格式打印出來:
如:
小張 的電話是 13888888888
小李 的電話是 13999999999

?

練習:
1. 寫程序實現復制文件的功能
要求:
1. 要考慮特大文件問題
2. 要關閉文件
3. 要能復制二進制文件
如:
請輸入源文件路徑名: /home/tarena/xxx.tar.gz
請輸入目標文件路徑名: ./a.tar.gz
顯示:
文件已成功復制

答案:

def copy_myfile():try:ypath = input("please inout raw path:")xpath = input("please inout new path:")f1 = open(xpath, "w+b")f = open(ypath, "r+b")for x in f:f1.write(x)f1.close()f.close()print("File copied")except:print("file not inexeistence")copy_myfile()

2. 修改學生信息管理程序,要求加入兩個功能:
9) 保存信息到文件(si.txt)

?

L = [{"name": "Tom", "age": 20, "score": 98},{"name": "Lin", "age": 21, "score": 99},{"name": "Garin", "age": 19, "score": 100}]def student_file(L):try:f = open("./si.txt", "x")for x in L:f.write(x["name"])f.write(" ")f.write(str(x["age"]))f.write(" ")f.write(str(x["score"]))f.write("\n")except FileExistsError:f = open("./si.txt", "a")for x in L:f.write(x["name"])f.write(" ")f.write(str(x["age"]))f.write(" ")f.write(str(x["score"]))f.write("\n")student_file(L)

?

?

10) 從文件中讀取數據(si.tx

def open_student_file():f = open("./si.txt")L = []for line in f.readlines():s = line.strip()n, a, s = s.split() # 拆成列表student = {"name": n, "age": a, "score": s}L.append(student)f.close()return L

源碼:? ? https://pan.baidu.com/s/1vVuH7OwNdn8vqaBKAivniQ
異常還沒處理...........

轉載于:https://www.cnblogs.com/ParisGabriel/p/9357601.html

總結

以上是生活随笔為你收集整理的Python全栈工程师(文件操作、编码)的全部內容,希望文章能夠幫你解決所遇到的問題。

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