zoukankan      html  css  js  c++  java
  • [python][LXF][homework]操作文件和目录

    reference website:

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431925324119bac1bc7979664b4fa9843c0e5fcdcf1e000#0

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

     1 from datetime import datetime
     2 import os
     3 
     4 pwd = os.path.abspath('.')
     5 
     6 print('Size    Last Modified    Name')
     7 print('------------------------------------------------------------')
     8 
     9 for f in os.listdir(pwd):
    10     fsize = os.path.getsize(f)
    11     mtime = datetime.fromtimestamp(os.path.getmtime(f)).strftime('%Y-%m-%d %H:%M')
    12     flag = '/' if os.path.isdir(f) else ''
    13     print('%10d  %s  %s%s'% (fsize, mtime, f, flag))

    2. 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。

    写了两种方案,第一种用os.walk(path),下标写的很不正规。打印出来的是绝对路径。

    第二种方案是遍历。用relpath打印相对路径。

    os.path.realpath(path)  #返回path的真实路径
    os.path.relpath(path, start)  #从start开始计算相对路
    os.path.walk(path, visit, arg)  #遍历path,进入每个目录都调用visit函数,visit函数必须有
    3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有
    文件名,args则为walk的第三个参数
    os.path.split(path)  #把路径分割成dirname和basename,返回一个元组
    os.path.join(path1, path2)  #把目录和文件名合成一个路径
     1 def print_path_1(path,file_name):
     2     for i in os.walk(path):
     3         l = len(i[2])
     4         for k in range(l):
     5             if file_name in i[2][k]:
     6                 print(i[0],i[2][k])
     7 
     8 def print_path_2(path,file_name):
     9     for i in os.listdir(path):
    10         context= os.path.join(path,i)
    11         if os.path.isfile(context) and (file_name in i):
    12             print(path,i)
    13             realpath = os.path.relpath(path,current_path)
    14             print(realpath)
    15         elif os.path.isdir(context):
    16             print_path_2(context,file_name)
    17 
    18 if __name__=='__main__':
    19     current_path = os.getcwd()
    20     a = [current_path, 'test']
    21     print_path_1(*a)
    22     print('----------------------------------')
    23     print_path_2(*a)
  • 相关阅读:
    delphi vcl图像的二值化
    黑科技工具,推荐两款开源自动生成代码神器!
    推荐一款最强Python自动化神器!不用写一行代码!
    Java 展开或折叠PDF中的书签
    C# / VB.NET 获取PDF文档的数字签名信息
    滚蛋了
    MySQL 执行计划
    MySQL优化索引
    延时队列 DelayQueue
    【MongoDB】MongoDB 的存储过程
  • 原文地址:https://www.cnblogs.com/hopping/p/7647094.html
Copyright © 2011-2022 走看看