人工智能系列-Python系列(六)文件操作

轉載請註明預見才能遇見的博客:http://my.csdn.net/

原文地址:https://blog.csdn.net/pcaxb/article/details/91982984

人工智能系列-Python系列(六)文件操作

目錄

人工智能系列-Python系列(六)文件操作

一、文本模式打開文件

1.讀文件

1)判斷是否可讀

2)讀取一行,如果使用了read讀取了,就是整個文件都讀取了,就不能再讀取

3)讀取文件所有內容,然後放到列表中

2.寫文件

1)判斷是否可寫

3.追加文件

4.讀寫文件

5.修改文件

6.with xxx as xxx文件

7.關閉文件

二、非文本模式打開文件

1.b的方式不能指定編碼

 2.二進制和其他編碼互轉

1)二進制轉換成uft-8

2)uft-8換成二進制

三.文件的其他函數

1.如果不知道文件編碼,就使用latin-1 ,拉丁編碼基本都支持

2.判斷文件是否關閉

3.文件編碼

4.刷新文件,修改文件之後需要刷新文件,不然文件就是沒有保存的

5.文件內光標移動

1)read(3):

2)其餘的文件內光標移動都是以字節爲單位如seek,tell,truncate

6.讀取文件中真正的換行符號newline

7.seek移動光標的位置


一、文本模式打開文件

# 注意 open這裏讀取的格式是系統格式,所以這裏需要設置文件格式
# 打開文件,得到文件句柄並賦值給一個變量
# r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】
# w,只寫模式【不可讀;不存在則創建;存在則清空內容】
# a, 之追加寫模式【不可讀;不存在則創建;存在則只追加內容】
# 擴展:
# "+" 表示可以同時讀寫某個文件
# r+, 讀寫【可讀,可寫】
# w+,寫讀【可讀,可寫】
# a+, 寫讀【可讀,可寫】
# file1 = open("file1", 'r+', encoding='utf-8')

1.讀文件

# 通過句柄對文件進行操作
# data = file1.read()  # 默認情況是隻讀
# print(data)  # 打印文件內容

1)判斷是否可讀

print(file1.readable())  #

2)讀取一行,如果使用了read讀取了,就是整個文件都讀取了,就不能再讀取

print(file1.readline())

3)讀取文件所有內容,然後放到列表中

print(file1.readlines())

2.寫文件

# file1.write('1-2222222222\n')
# file1.write('2-2222222222\n')
# file1.write('3-2222222222\n')

1)判斷是否可寫

# print(file1.writable())  #
# names = ['111\n', '222\n', '333\n']  # 文件內容只能是字符串
# file1.writelines(names)

3.追加文件

# 如果 open("file1", 'a', encoding='utf-8') 這裏的模式設置的是a ,write就是追加寫

4.讀寫文件

# file1.write("kkkk") # 這裏是覆蓋文件
# content = file1.read()
# print(content)

5.修改文件

# 把文件中的111全部替換成一一一
# datas = file1.readlines()
# datasc = []
# print(datas)
# for data in datas:
#     data = data.replace('111', '一一一')
#     datasc.append(data)
# print(datasc)
# file1.writelines(datasc)

# file1.write("HHHH")

6.with xxx as xxx文件

# with open('file1','r+',encoding='utf-8') as f1:

# with open('file1', 'r', encoding='utf-8') as f1, \
#         open('file2', 'w', encoding='utf-8') as f2:
#     f1_data = f1.read()
#     f2.write(f1_data)
#     f1.close()
#     f2.close()

7.關閉文件

file1.close()

二、非文本模式打開文件

# 對於非文本文件,我們只能使用b模式,"b"表示以字節的方式操作(而所有文件也都是以字節的形式存儲的,
# 使用這種模式無需考慮文本文件的字符編碼、圖片文件的jgp格式、視頻文件的avi格式)
# rb、wb、ab
# 注:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型,不能指定編碼

1.b的方式不能指定編碼

# file1 = open('file1', 'rb+')
# data = file1.read()
# print(data)  # rb讀取的是二進制

 2.二進制和其他編碼互轉

# encode:字符串--bytes
# decode:bytes--字符串

1)二進制轉換成uft-8

# print(data.decode('UTF-8'))  # 二進制轉換成uft-8

2)uft-8換成二進制

# file1.write('===你你你'.encode('utf-8'))
# file1.write(bytes('+++我我我', encoding='utf-8'))

三.文件的其他函數

1.如果不知道文件編碼,就使用latin-1 ,拉丁編碼基本都支持

file1 = open('file1', 'r', encoding='UTF-8')

2.判斷文件是否關閉

print(file1.closed)  # False

3.文件編碼

print(file1.encoding)  # utf-8

4.刷新文件,修改文件之後需要刷新文件,不然文件就是沒有保存的

# file1.flush()
# print(file1.name)  # file1 文件名字

5.文件內光標移動

1)read(3):

# a)文件打開方式爲文本模式時,代表讀取3個字符
# b)文件打開方式爲b模式時,代表讀取3個字節

2)其餘的文件內光標移動都是以字節爲單位如seek,tell,truncate

# a)seek有三種移動方式0,1,2,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes爲單位移動的
# b)truncate是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因爲那樣直接清空文件了,所以truncate要在r+或a或a+等模式下測試效果
# tell 光標所在位置
# print(file1.tell())  # 0
# file1.readline()
# print(file1.tell())  # 18

6.讀取文件中真正的換行符號newline

file2 = open('file2', 'r', encoding='utf-8', newline='')
print(file1.readlines())
print(file2.readlines())

7.seek移動光標的位置

# file1.seek()
file1.seek(5)
print(file1.tell()) # 5
file1.seek(32)
print(file1.tell())
參考資料;https://www.cnblogs.com/linhaifeng/articles/5984922.html

人工智能系列-Python系列(六)文件操作

博客地址:https://blog.csdn.net/pcaxb/article/details/91982984

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章