Python學習part4:Python的文件操作

Python學習part3:Python的文件操作

首先我們來看一道題
1.統計this.txt文件中字母(‘a’-‘z’)、大寫字母( ‘A’-‘Z’)、數字(0-9)、其他字符的個數。
this.txt
在這裏插入圖片描述
我們可以用兩種方法來完成
1.普通方法

l = 0
a = 0
b = 0
d = 0
with open('C:/Users/admin/Desktop/text/this.txt', 'r') as fr:
    txt = fr.read()
for c in txt:
    if 'a'<=c<='z':
        l += 1
    elif 'A'<=c<='Z':
        a += 1
    elif '0'<=c<='9':
    	b += 1
    else:
        d += 1
print('小寫字母:',l)
print('大寫字母:',a)
print('數字字符:',b)
print('其他:',d)

with 語句(上下文管理器)
with 關鍵字(上下文管理器)可以自動管理上下文資源,不論什麼原因跳出 with 塊,都能
確保文件正確的關閉,並且可以在代碼塊執行完畢後自動還原進入該代碼塊時的現場。

with open("文件路徑""打開方式") as f:
    txt=f.read()

記得加分號!
附上打開方式
在這裏插入圖片描述
2.運用isdigit(),isalpha()函數

intCount = 0  #用來記錄列表中的int元素個數
strCount = 0 #記錄str元素個數
otherCount = 0
with open('C:/Users/admin/Desktop/text/this.txt') as f:#open用於打開文件,read用於讀取文件
    a=f.read()
# 使用for循環遍歷字符串,每次循環判斷當前獲取的元素的類型,並給對應計數器計數
for i in a:   
    if i.isdigit(): #判斷i是不是int
        intCount += 1
    elif i.isalpha(): #判斷i是不是str
        strCount += 1
    else:
        otherCount += 1
print("字母:",strCount)
print("數字:",intCount)
print("其他:",otherCount)

isdigit() 方法檢測字符串是否只由數字組成。
isalpha() 方法檢測字符串是否只由字母組成。

3.可以輸出字母和數字的re函數

import re
with open('C:/Users/admin/Desktop/text/this.txt') as f:
    img=f.read()
num=re.compile('[0-9]')#compile指編譯
alpha=re.compile('[a-z A-Z]')
numlist=num.findall(img)
alphalist=alpha.findall(img)
print('包含數字:',numlist)
print('包含字母:',alphalist)

下面介紹sys.path
sys.path是python的搜索模塊的路徑集(列表)
主要用法:
sys.path.append()
先建立一個文件
在這裏插入圖片描述
找到JMU.py所在的地址
建立主程序

import sys
sys.path.append('D:/hzh')#若要導入自建文件,必須加這個
import JMU
print(JMU)

輸出:
在這裏插入圖片描述

OS模塊常用方法
os.getcwd() 方法用於返回當前工作目錄。
os.chdir() 方法用於改變當前工作目錄到指定的路徑。
os.rename() 方法用於命名文件或目錄,從 src 到 dst,如果dst是一個存在的目錄, 將拋出OSError。(需要在當前目錄打開終端)
os.listdir() 方法用於返回指定的文件夾包含的文件或文件夾的名字的列表。這個列表以字母順序。
os.path.abspath(path) 返回絕對路徑
os.path.basename(path) 返回文件名

write()/writelines()寫入數據
write指輸入字符串;
writeline指將字符串列表輸入

a=open('C:/Users/admin/Desktop/text/hhh(2).txt','w')
a.write('good\nhhh\njjj\n')
a.writelines(['abc\n','def\n','ghj\n'])

文本文件的讀取

with open('C:/Users/admin/Desktop/text/this.txt') as f:
	img=f.read(4)#讀取前四個字符
	img1=f.read()#全部讀取
	img2=f.readline()#讀取一行字符返回
	img3=f.readlines()#文本文件中,每一行作爲一個字符串存入列表中,返回該列表 

注意:最好分開一個一個寫,不要並列寫讀取(如上不提倡)

題目:

2.實現類似DOS命令中的tree命令功能
方法1:
運用root,dirs,files

import os
a=open('D:/hzh/2.txt','w')
path='D:/hzh'
for root,dirs,files in os.walk(path):
    for i in root:#root遍歷包括當前文件夾下的所有子文件夾的絕對路徑
        a.write(i)
    for i in dirs:#dirs遍歷當前文件夾下的文件夾名稱(不包括當前文件夾且僅包括當前文件夾的子文件夾)
        a.write(i)
        a.write('\n')
    for i in files:#files遍歷當前文件夾下的文件(不包括文件夾且僅包括當前文件夾下的子文件)
        a.write(i)
        a.write('\n')

注意:1.引入os模塊;
2.用os.walk(path)一定需要root,dirs,files,一同循環。(缺一不可)
效果圖
在這裏插入圖片描述
方法2:
在當前文件夾下 (shift +鼠標右鍵) 打開終端輸入 tree /f > 1.txt 則將文件夾下的文件名放入1.txt文件中。

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