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文件中。

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