练习题5(IO编程)

IO编程

1. 文件读写

练习:请将本地一个文本文件读为一个str并打印出来:

>>> with open('C:\\Users\\Administrator\\Desktop\\ss\\test.txt', 'r') as f:
...     f.read()
...
'hello, world!'

2. 操作文件和目录

  1. 利用os模块编写一个能实现dir -l输出的程序。
from datetime import datetime
import os

pwd = os.path.abspath('.')

print('      Size     Last Modified  Name')
print('------------------------------------------------------------')

for f in os.listdir(pwd):
    fsize = os.path.getsize(f)
    mtime = datetime.fromtimestamp(os.path.getmtime(f)).strftime('%Y-%m-%d %H:%M')
    flag = '/' if os.path.isdir(f) else ''
    print('%10d  %s  %s%s' % (fsize, mtime, f, flag))

输出结果:

      Size     Last Modified  Name
------------------------------------------------------------
       741  2020-12-07 17:12  1-数据类型.py
        86  2020-12-15 17:10  2.py
       427  2020-12-16 08:59  3-函数参数.py
       409  2020-12-16 14:31  4-迭代.py
       386  2021-03-01 10:10  hello.py
       379  2020-12-16 14:37  test.py
  1. 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
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 in file:
                print(this_path)
        else:  # 不是就再次执行这个函数,递归下去
            search_file(this_path, str)  # 使用路径继续递归下去


if __name__ == "__main__":
    search_file(os.path.abspath('C:\\Users\\Administrator\\Desktop\\ss'), ".txt")

输出结果:

C:\Users\Administrator\Desktop\ss\aa\11.o\111.txt
C:\Users\Administrator\Desktop\ss\aa\test1.txt
C:\Users\Administrator\Desktop\ss\aa\test2.txt
C:\Users\Administrator\Desktop\ss\aa\test3.txt
C:\Users\Administrator\Desktop\ss\aa\test4.txt
C:\Users\Administrator\Desktop\ss\aa\test5.txt
C:\Users\Administrator\Desktop\ss\test.txt

3. 序列化

1
2
通过对比可知,ensure_ascii为True时中文是乱码,为False时中文正常显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员老五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值