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)
  • 相关阅读:
    CF1539 VP 记录
    CF1529 VP 记录
    CF875C National Property 题解
    CF1545 比赛记录
    CF 1550 比赛记录
    CF1539E Game with Cards 题解
    CF1202F You Are Given Some Letters... 题解
    vmware Linux虚拟机挂载共享文件夹
    利用SOLR搭建企业搜索平台 之九(solr的查询语法)
    利用SOLR搭建企业搜索平台 之四(MultiCore)
  • 原文地址:https://www.cnblogs.com/hopping/p/7647094.html
Copyright © 2011-2022 走看看