自己敲一遍這個代碼,注釋我寫的超級詳細,一定可以明白!
內容原創(chuàng),請勿轉載
?知識點學習參考:
1.基本讀寫常用指令:
一文搞懂Python文件讀寫 - 知乎 (zhihu.com)
2.文件遍歷知識總結:?
(205條消息) python遍歷文件夾下的所有文件_python遍歷d盤下面所有文件(排除掉文件夾)_熱巴的小哥哥的博客-CSDN博客
3. isdir函數(shù)詳解:?Python判斷路徑是否是目錄-Python isdir函數(shù)-嗨客網(wǎng) (haicoder.net)?
目錄
第1關:讀取文件內容?
第2關:素數(shù)寫入文件
第3關:輸出文件目錄?
第4關:讀寫json文件
第1關:讀取文件內容?
第一關內容確少:若讀取文件時解碼錯誤,則輸出`讀取文件時解碼錯誤!`?
通關是因為沒有這個測試集,一定要加上這個條件
def file(name,encoding = 'utf-8'):
'''
讀取文件內容,如文件存在,則輸出文件信息,
若文件不存在,則輸出`無法打開指定的文件!`,
若文件編碼方案和打開指定編碼方案不同,則輸出`指定了未知的編碼!`,
若讀取文件時解碼錯誤,則輸出`讀取文件時解碼錯誤!`
:params name:文件名
:params encoding:編碼方案。默認為'utf-8'
:return :無返回值,直接輸出
'''
# 請在此處添加代碼 #
# *************begin************#
#我的代碼邏輯:if(文件存在與否) else
#情況1:編碼方案相同
if encoding == 'utf-8': #編碼方案默認為utf-8
# ① 文件存在
try:
f = open(name) #第一步:用open()來打開文件后,可以用open各種方法
print(f.read()) #read:讀取一些數(shù)據(jù),作為字符串(文本模式下)或 字節(jié)對象(二進制模式下)返回。默認讀取文件全部
# ② 文件不存在
except FileNotFoundError:
print('無法打開指定的文件!')
#情況2:編碼方案不同
else:
print('指定了未知的編碼!')
# **************end*************#
if __name__ == '__main__':
name,encoding = input().split(',')
file(name=name,encoding=encoding)
第2關:素數(shù)寫入文件
from math import sqrt
def is_prime(n):
"""判斷素數(shù)的函數(shù)"""
assert n > 0
for factor in range(2, int(sqrt(n)) + 1):
if n % factor == 0:
return False
return True if n != 1 else False
def store():
# 請在此處添加代碼 #
# *************begin************#
#文件1:1-99素數(shù)
with open("a.txt",'w') as f: # with:最好寫上,當子句體結束后,文件會正確關閉,即使異常無礙
for i in range(2,100):
if is_prime(i):
f.write(str(i) + "\n")
#文件2:100-999素數(shù)
with open("b.txt",'w') as f:
for i in range(100,1000):
if is_prime(i):
f.write(str(i) + "\n")
#文件3:1000-9999素數(shù)
with open("c.txt",'w') as f:
for i in range(1000,10000):
if is_prime(i):
f.write(str(i) + "\n")
# **************end*************#
第3關:輸出文件目錄?
文章來源:http://www.zghlxwxcb.cn/news/detail-753703.html
from os import listdir #os模塊的listdir方法;返回目標路徑下文件和文件夾的名字列表,參數(shù)=目標路徑
from os.path import join,isfile,isdir # os.listdir(r'E:\test')
def listDir(director):
""" os模塊中相關文件目錄操作
遍歷文件夾,如果是文件就直接輸出當前文件絕對路徑,
如果是文件夾,就輸出當前文件夾路徑,
然后接著遍歷該子文件夾,直到指定文件夾被全部遍歷完。
:param director: 需遍歷的路徑
:return:無返回值,直接輸出
"""
# 請在此處添加代碼 #
# *************begin************#
# 1.不是目錄
if not isdir(director): #isdir:判斷是否是目錄
printf("no")
return
# 2.是目錄
for x in listdir(director): #遍歷
temp = join(director,x) #join:連接字符串,數(shù)組,元素序列,字典,元組
#文件
if isfile(temp):
print(temp)
elif isdir(temp):
print(temp)
listDir(temp)
# **************end*************#
第4關:讀寫json文件
文章來源地址http://www.zghlxwxcb.cn/news/detail-753703.html
import json
def main(name):
# 請在此處添加代碼 #
# *************begin************#
attribute = [] # attribute:存儲對象屬性+特征(eg: 年齡,性別,身高)
ans = [] #ans: anser存儲某個結果或答案的屬性(eg: 數(shù)學結果)
try: #try except:捕獲可能出現(xiàn)的異常,防止程序中斷
with open(name,'r') as f:#打開一個名為name的文本文件(只讀模式打開)
title = f.readline() #讀取文件的第一行(標題行)
title = title.replace("\n","").split(" ") #去掉標題行中換行符,使用空格將字符串分割成一個列表
while True: #無限循環(huán),直到break
content = f.readline() #讀取下一行
if content == "":break #內容=空,結束循環(huán)
content = content.replace("\n","").split(" ") #去換行符,分割列表
temp = dict(zip(title,content)) #zip 一一對應,換成字典
ans.append(temp) #加入列表ans中 append:末尾添加一個元素
print(ans)
except Exception as e:
print(e) #文本文件以字典列出,方便后續(xù)處理
# **************end*************#
if __name__ == '__main__':
name = input()
main(name)
到了這里,關于頭歌:Python開發(fā)技術—文件和異常3( 答案+詳細注釋)第1關:讀取文件內容+第2關:素數(shù)寫入文件+第3關:輸出文件目錄+第4關:讀寫json文件的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!