一、实验目的
掌握文件操作的基本方法。
二、实验环境
VS code
三、实验内容、步骤和结果分析
题目一:编写程序,用户输入一个目录和一个文件名,搜索该目录及其子目录是否存在该文件,如果存在就输出这些文件的路径。
源码:
import os # 引入os
"编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径"
def search_file(path, str): # 传入当前的绝对路径以及指定字符串
# 首先先找到当前目录下的所有文件
for file in os.listdir(path): # os.listdir(path) 是当前这个path路径下的所有文件的列表
this_path = os.path.join(path, file)
if os.path.isfile(this_path): # 判断这个路径对应的是目录还是文件,是文件就走下去
if str == file:
print(this_path)
else: # 不是就再次执行这个函数,递归下去
search_file(this_path, str) # 递归下去
if __name__ == "__main__":
search_file("D:\qq下载", "1656813587954.jpg")
运行结果截图:
实验过程分析:
首先循环拿到输入目录下的每一个文件或目录,并把路径和得到的文件或文件名拼接起来,如果是目录则递归调用函数,如果不是则判断是否与输入的文件相同,相同则输出该路径。
题目二:假设有一个英文文本文件,编写程序读取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。
源码:
f=open('D:/桌面/111.txt','r')
s=f.readlines()
f.close()
r=[i.swapcase() for i in s] #大小写转换
f=open('D:/桌面/111.txt','w+')
f.writelines(r)
f.seek(0)
ss=f.read()
f.close()
print('转换结果为:',ss)
运行结果截图:
修改前的内容:
运行结果:
修改后的结果:
实验过程分析:
先以读的方式打开文件,读出文件内容,使用swapcase函数进行大小写转换,最后写入文件。
题目三:编写一个程序,对一个文件的每一行后面加上行号(行号前面以#隔开)。
源码:
with open(r'D:/桌面/111.txt') as f1:
cNames = f1.readlines()
for i in range(0,len(cNames)):
cNames[i] = cNames[i][:-2]+"#"+str(i+1)+"\n"
#将处理过的cNames写入新的文件中
with open(r'D:/桌面/111.txt','w') as f2:
f2.writelines(cNames)
运行结果截图:
修改前的内容:
运行结果:
修改后的内容:
实验过程分析:
先读出文件的每一行存入列表中(注意换行符),循环列表中的每一个字符串,在末尾加上#、行号和换行符,再加入到列表中,再将列表中的每一项写入文件。