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)
  • 相关阅读:
    22(1).模型融合---Random Forest
    Tesseract 模块
    非线性问题的三种处理方法
    jupyter 快捷键
    回归评价指标---MSE、RMSE、MAE、R-Squared
    理解JavaScript中的事件处理
    jquery事件重复绑定解决办法
    IE6 IE7 IE8(Q) 不支持 JSON 对象
    浏览器事件机制与自定义事件的实现
    浏览器加载和渲染html的顺序
  • 原文地址:https://www.cnblogs.com/hopping/p/7647094.html
Copyright © 2011-2022 走看看