实验七 文件及文件夹操作

实验目的

  1. 掌握内置函数open()的用法
  2. 熟练运用with关键字
  3. 掌握os、os.path、shutil标准库中常用函数的用法
  4. 掌握递归遍历文件夹及其子文件夹的原理
  5. 了解python-docx、openpyxl等扩展库的用法

实验内容

  1. 现在d:\有一份‘邀请函.txt’的空白文件,请在同级目录下编写一段代码,写入内容‘诚挚邀请您来参加本次宴会’。
  2. 在第一题的基础上,添加上问候语和发件人,内容是’best regards 李雷’,让内容是:
    诚挚邀请您来参加本次宴会。
    best regards
    李雷
  3. 使用嵌套循环实现九九乘法表,并将乘法表的内容写入到“d:\乘法表.txt”文件中。
  4. 把d盘根目录下的记事本文件test.txt转换成Excel文件。假设test.txt文件中第一行为表头,从第二行开始为实际数据,并且表头和数据行中的不同字段信息都是用逗号分隔。
  5. 编写程序,检查D:\文件夹及其子文件夹中是否存在一个名为temp.txt的文件

实验过程

  1. 现在d:\有一份‘邀请函.txt’的空白文件,请在同级目录下编写一段代码,写入内容‘诚挚邀请您来参加本次宴会’。

第一种解法
程序代码如下

content = '诚挚邀请您来参加本次宴会。'
with open('D:\邀请函.txt','w') as fp:
    fp.write(content)

运行结果如下
在这里插入图片描述
第二种解法
程序代码如下

f = open(r'D:\邀请函.txt',"a+")
data = f.write('诚挚邀请您来参加本次宴会')
f.close()

运行结果如下
在这里插入图片描述

  1. 在第一题的基础上,添加上问候语和发件人,内容是’best regards 李雷’,让内容是:
    诚挚邀请您来参加本次宴会。
    best regards
    李雷

第一种解法
程序代码如下

content = '\nbest regards\n李雷'
with open('D:\邀请函.txt','a') as fp:
    fp.write(content)

运行结果如下
在这里插入图片描述

第二种解法
程序代码如下

f = open('D:\邀请函.txt',"a+")
data = f.write('诚挚邀请您来参加本次宴会')
f.write("\nbest regards\n")
f.write("李雷")
f.close()

运行结果如下
实验七 文件及文件夹操作_第1张图片

  1. 使用嵌套循环实现九九乘法表,并将乘法表的内容写入到“d:\乘法表.txt”文件中。

第一种解法
程序代码如下

with open('D:\乘法表.txt',mode = 'w',encoding = 'utf-8') as fp:
    for i in range(1,10):
        for j in range(1,i+1):
            fp.write('{} X {} = {}      '.format(i,j,i*j))
        fp.write('\n')

运行结果如下
实验七 文件及文件夹操作_第2张图片

第二种解法
程序代码如下

with open("D:\乘法表.txt",mode = 'w+',encoding = 'utf-8') as f:
    for i in range(1,10):
        for j in range(1,i+1):
            file = "{0} * {1} = {2}\t".format(i,j,i*j)
            f.write(file)
        f.write("\n")

运行结果如下
实验七 文件及文件夹操作_第3张图片

  1. 把d盘根目录下的记事本文件test.txt转换成Excel文件。假设test.txt文件中第一行为表头,从第二行开始为实际数据,并且表头和数据行中的不同字段信息都是用逗号分隔。

第一种解法
程序代码如下

from openpyxl import Workbook

def main(txtFileName):
    #得到对应的Excel文件名
    new_XlsxFileName = txtFileName[:-3] + 'xlsx'
    #创建工作簿,并获取其中第一个工作表
    wb = Workbook()
    ws = wb.worksheets[0]
    #打开原始的记事本文件,依次读取每行内容,切分后写入Excel文件
    with open(txtFileName) as fp:
        for line in fp:
            #切分后得到列表,可以直接追加到工作表中
            #每个元素写入一个单元格
            line = line.strip().split(',')
            ws.append(line)
        #保存Excel文件
            wb.save(new_XlsxFileName)

main('D:\\test.txt')

运行结果如下
实验七 文件及文件夹操作_第4张图片

第二种解法
程序代码如下

from openpyxl import Workbook
def main(txtFileName):
    new_XlsxFileName = txtFileName[:-3] + 'xlsx'
    wb = Workbook()
    ws = wb.worksheetx[0]
    with open(txtFileName,mode = 'r',encoding = 'uttf-8') as fp:
        for line in fp:
            line = line.strip().split(',')
            ws.append(line)
        wb.save(new_XlsxFileName)
main(r'D:\text.txt')

运行结果如下
实验七 文件及文件夹操作_第5张图片

  1. 编写程序,检查D:\文件夹及其子文件夹中是否存在一个名为temp.txt的文件

第一种解法
程序代码如下

from os import listdir
from os.path import join,isdir
def find(directory,fileName):
    all_dir = [directory]
    #print(all_dir)
    while(all_dir):
        now = all_dir.pop(0)
        #print(now)
        #print(listdir(now))
        for subPath in listdir(now):
            if subPath == fileName:
                return '该文件夹下存在temp.txt的文件'
            path = join(now,subPath)
            if isdir(path):
                all_dir.append(path)
    return '该文件夹下不存在temp.txt的文件'
print(find('D:\\1','excel.txt'))

运行结果如下
实验七 文件及文件夹操作_第6张图片

第二种解法
程序代码如下

from os import listdir
from os.path import join,isdir
def search(directory,fileName):
    dirs = [directory]
    while dirs:
        current = dirs.pop(0)
        print(current)
        for subPath in listdir(current):
            if subPath == fileName:
                return '存在文件'
            path = join(current,subPath)
            if isdir(path):
                dirs.append(path)
print(search(r'D:','temp.txt'))

运行结果如下
实验七 文件及文件夹操作_第7张图片

你可能感兴趣的:(Python程序设计基础与应用,python,算法,数据结构)