python(day025——文件和目录操作4)

本文通过多个实例,演示了Python在处理列表、生成数组、文件操作、目录遍历、文本处理及算法实现等方面的应用技巧,深入浅出地介绍了Python编程的基础与实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习:

#将两个list,连接[(1,4),(2,5),(3,6)]:l1=[1,2,3] l2=[4,5,6]
l1=[1,2,3]
l2=[4,5,6]
l=[]
for i in range(3):
    t=(l1[i],l2[i])
    l.append(t)
print(l)
#生成二维数组[[0,1,2],[3,4,5],[6,7,8]]
result=[]
flag=[]
for i in range(9):
    flag.append(i)
    if len(flag)<3:
        continue
    else:
        result.append(flag)
        flag=[]
print(result)
#L中按照学生姓名和成绩排序L=[("Bob",75),("Adam",92),("Bart",66),("Lisa",88)]
L=[("Bob",75),("Adam",92),("Bart",66),("Lisa",88)]
def func(l):
    return l[0] #用名字
    #return l[1] 用成绩
print(sorted(L,key=func))


#L中按照学生姓名和成绩排序L=[("Bob",75),("Adam",92),("Bart",66),("Lisa",88)]
L=[("Bob",75),("Adam",92),("Bart",66),("Lisa",88)]
d={}
for i in L:
    d[i[0]]=i[1]
print(d)
flag=sorted(d.values())
print(flag)
result=[]
for i in  flag:
    for key,value in d.items():
        if value==i:
            t=(key,value)
            result.append(t)
print(result)

"""结果:
{'Bob': 75, 'Adam': 92, 'Bart': 66, 'Lisa': 88}
[66, 75, 88, 92]
[('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]
"""
#生成["z1","y2,"x3","w4","v5"]
result=[]
for i in range(1,6):
    flag=ord("z")-i+1
    c=str(chr(flag))+str(i)
    result.append(c)
print(result)

os.walk

# encoding=utf-8
import os

# root表示当前被访问的目录名称
# dirs表示当前目录中所有的子目录名称(元祖)
# dirs表示当前目录中所有的文件名称(元祖)

# 最外层for实现了,每一个目录的遍历
txt_file_count=0
for root, dirs, files in os.walk("d:\\test", topdown=False):
    print(u"当前目录:", root)  # 打印目录绝对路径
    for name in files:  # 内层for实现了,遍历某一个目录中所有的文件名称
        print(u'文件名:', os.path.join(root, name))  # 打印文件绝对路径
        if os.path.splitext(name)[1]==".txt":#统计txt文件数量
            txt_file_count+=1
        files
    for name in dirs:  # 实现遍历某一个目录中的所有子目录名称
        print(u'目录名:', name)  # 打印目录绝对路径

    print("*" * 20)
print(txt_file_count)

练习:

#统计一个目录下所有文件名和子目录文件名,不含后缀
import os
def get_all_filename(dir_path):
    if not os.path.exists(dir_path):
        print("%s该文件路径不存在" % dir_path)
        return None
    if not os.path.isdir(dir_path):
        print("%s不是一个目录")
        return None

    filename=[]
    for root,dirs,files in os.walk(dir_path):
        for file in files:
            filename.append(os.path.splitext(file)[0])
    return filename
print(get_all_filename("d:\\test"))
#求一个文件路径下所有jpg文件的数量
import os
def get_jpg_filecount(dir_path):
    if not os.path.exists(dir_path):
        print("%s该文件路径不存在" % dir_path)
        return None
    if not os.path.isdir(dir_path):
        print("%s不是一个目录")
        return None

    count=0
    for root,dirs,files in os.walk(dir_path):
        for file in files:
            if file[-4:]==".jpg":
                count+=1

    return count
print(get_jpg_filecount("d:\\test"))

 

#求一个目录下txt的文件路径,并写入文件中
import os
def get_txt_filecount(dir_path):
    if not os.path.exists(dir_path):
        print("%s该文件路径不存在" % dir_path)
        return None
    if not os.path.isdir(dir_path):
        print("%s不是一个目录")
        return None

    txt_dir=[]
    for root,dirs,files in os.walk(dir_path):
        for file in files:
            if file[-4:]==".txt":
                txt_dir.append(os.path.join(root,file))

    return txt_dir
txt_dir=get_txt_filecount("d:\\test")

#写入
with open("d:\\aaa.txt","w") as fp:
    fp.writelines(txt_dir)

 


import sys

sys.argv:将命令行的内容传入函数

 

 

 

练习:

#在文件的第二行后插入一行内容,且统计插入后文件的行数
>>> import os
>>> os.path.exists("a.py")
True
>>>
>>> fp=open("a.py","r+")
>>> content=fp.read()
>>> content
'#encoding=utf-8\nimport sys\nprint(sys.path)'
>>> fp.seek(0,0)
0
>>> content=fp.readlines()
>>> content
['#encoding=utf-8\n', 'import sys\n', 'print(sys.path)']
>>> content.insert(1,"I am a girl\n")
>>> content
['#encoding=utf-8\n', 'I am a girl\n', 'import sys\n', 'print(sys.path)']
>>> fp.tell()
44
>>> fp.seek(0,0)
0
>>> fp.writelines(content)
>>> fp.tell()
57
>>> fp.close()

练习:读一个文件,统计不重复单词有多少,再在另一个文件中写入每个单词及其出现次数。

SciPy is a collection of packages for mathematics, science, and engineering.
Pandas is a data analysis and modeling library.
IPython is a powerful interactive shell that features easy editing and recording of a work session, and supports visualizations and parallel computing.
The Software Carpentry Course teaches basic skills for scientific computing, running bootcamps and providing open-access teaching materials.

import os
if os.path.exists("d:\\test\\a.py"):
    with open("d:\\test\\a.py") as fp:
        content=fp.read()
content=content.replace(","," ")
content=content.replace("."," ")
word_list=content.split()
word_count={}
print("不重复单词个数:",len(set(word_list)))
for i in word_list:
    if i not in word_count:
        word_count[i]=1
    else:
        word_count[i]+=1
print("不重复单词个数:",len(word_count.keys()))

with open("d:\\test\\c.py","w") as fp:
    for k,v in word_count.items():
        fp.write("%s出现的个数是 %s \n" %(k,v))

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值