zoukankan      html  css  js  c++  java
  • 【python实例】文件操作实例

     1 # 给定一个目录
     2 # 列举出这个目录中的所有文件和文件夹
     3 # 以及子文件夹中的所有文件
     4 
     5 import os
     6 
     7 def func(path, f):   # 参数为给定的目录  a
     8     file_list = os.listdir(path)  # 获取给定目录中的所有(文件, 文件夹)
     9 
    10     for file in file_list:  # 遍历列表, 获取其中的每个(文件, 文件夹)
    11         file_path = path + "/" + file  # D:/first_level/day14/a/b/c
    12         if os.path.isfile(file_path):  # b
    13             print("[文件]: ", file)
    14             f.write("[文件]: %s
    " % file)
    15 
    16         elif os.path.isdir(file_path):  # 此时该文件是个目录
    17             print("[目录]:", file)
    18             f.write("[目录]: %s
    " % file)
    19             func(file_path, f)  # 路径: 绝对路径  file就只是个文件名
    20 
    21 
    22 f = open("ufile.txt", "a")  # 在递归中操作同一个文件时, 尽量把文件的打开和关闭放在函数外,避免在递归中多次打开;
    23 func(r'D:/first_level/day14', f)
    24 f.close()
     1 """
     2     1、让用户输入一个目录
     3     2、判断用户输入的是否是一个目录
     4         2.1 切换到用户所输入的目录中去
     5         2.2 获取当前目录, 并显示当前目录下的所有文件
     6             再分别显示每个文件是 文件 或者是 目录?
     7     3、显示功能, 让用户选择, 并执行
     8         3.1 添加前缀
     9         3.2 删除前缀
    10         3.3 创建文件
    11         3.4 删除文件
    12         3.5 重命名文件
    13 """
    14 import os
    15 
    16 
    17 def func():
    18     dir = input("请输入一个目录:")
    19 
    20     if os.path.isdir(dir):
    21         os.chdir(dir)  # 切换到指定目录 --> day14
    22         file_list = os.listdir(dir)  # 获取指定路径下的所有文件, 并返回一个列表
    23         # ["hw01.py", "hw02.py", "test.py", "uabc.txt",...]
    24         for file in file_list:  # 遍历获取列表中的每一个文件
    25             if os.path.isdir(file):  # 该文件的相对路径
    26                 print("[目录]: %s" % file)
    27             elif os.path.isfile(file):
    28                 print("[文件]: %s" % file)
    29 
    30         choice = input("---1,添加前缀;2,删除前缀;3,创建文件;4,删除文件;5,重命名文件---")
    31         if choice == "1":
    32             res = input("请输入所修改的文件和前缀, 中间以空格分开:")  # 'hw01.py m'
    33             name_list = res.split(" ")  # 0 文件名 1 前缀
    34             if name_list[0] in file_list:   # 判断该文件是否存在
    35                 os.rename(name_list[0], name_list[1] + name_list[0])
    36                 print("文件添加前缀成功!!!")
    37             else:
    38                 print("该文件不存在, 无法改名")
    39 
    40         elif choice == "2":
    41             res = input("请输入所删除前缀的文件和前缀, 中间以空格分开:")
    42             name_list = res.split(" ")
    43             if name_list[0] in file_list:  # utext.py --> test.py
    44                 os.rename(name_list[0], name_list[0].replace(name_list[1], "", 1))
    45                 print("文件删除前缀成功!")
    46             else:
    47                 print("该文件不存在")
    48 
    49         elif choice == "3":  # 创建文件
    50             file_name = input("请输入要创建的文件名:")
    51             if not os.path.exists(file_name):
    52                 with open(file_name, "w") as f:
    53                     pass
    54                 print("文件创建成功")
    55             else:
    56                 print("该文件已存在")
    57 
    58         elif choice == "4":  # 删除文件
    59             file_name = input("请输入要删除的文件名:")
    60             if os.path.exists(file_name):
    61                 os.remove(file_name)  # 如果文件存在, 那么删除
    62                 print("已成功删除该文件")
    63             else:
    64                 print("该文件不存在")
    65 
    66         elif choice == "5":  # 重命名
    67             res = input("请输入原文件和新文件名, 中间以空格分开:")
    68             name_list = res.split(" ")  # 0--> 原文件名, 1 --> 新文件名
    69             if name_list[0] in file_list:
    70                 os.rename(name_list[0], name_list[1])
    71                 print("文件重命名成功~")
    72             else:
    73                 print("该文件不存在, 无法重命名...")
    74         else:
    75             print("--输入错误--")
    76     else:
    77         print("您输入的不是一个目录, %s" % dir)
    78 
    79 
    80 func()
     1 # 用户输入文件名以及开始搜索的路径
     2 # 搜索该文件是否存在,如遇到文件夹,则进入文件夹继续搜索
     3 
     4 import os
     5 
     6 
     7 def func(s_file, path):   # 参数1: 被搜索的文件 参数2: 搜索的目录 D:/first_level/day14/a/b
     8     file_list = os.listdir(path)  # 将该目录下的所有文件/文件夹 获取到
     9 
    10     for file in file_list:  # 遍历列表, 获取列表中的每个文件  a, b, c.txt
    11         file_abs_path = path + "/" + file  # 获取每个文件的绝对路 "D:/first_level/day14/a/b/c.txt"
    12 
    13         if os.path.isdir(file_abs_path):  # 判断该文件是否是一个目录  D:/first_level/day14/a/b/c.txt
    14             res = func(s_file, file_abs_path)  # 递归调用自己
    15             if res == True:
    16                 return True
    17 
    18         elif file == s_file:  # 判断遍历出的文件 是否就是 被搜索的文件
    19             return True
    20 
    21     return False
    22 
    23 
    24 r = func("c.txt", "D:/first_level/day14")
    25 print(r)
     1 """
     2     封装一个函数,可以使用mkdir的方法, 实现创建多级目录的功能
     3     os.mkdir()  创建一级目录
     4     os.makedirs()  创建多级目录
     5 
     6     D:/xixi/haha/hanhan/daidai/ranran/taotao/huihui
     7 思路:
     8     D:/    从根盘符开始, 这个根目录肯定是存在的
     9     D:/xixi   判断跟盘符下的第1个路径, 如果不存在, 创建; 如果存在, 继续往下判断;
    10     D:/xixi/haha  判断跟盘符下的第2个路径,  如果不存在, 创建; 如果存在, 继续往下判断;
    11     D:/xixi/haha/hanhan  判断跟盘符下的第3个路径,  如果不存在, 创建; 如果存在, 继续往下判断;
    12     .....
    13 
    14     D:   xixi   haha   hanhan   daidai    taotao    ranran
    15 
    16 """
    17 import os
    18 
    19 
    20 def my_makedirs(path):  # path: 所创建的多级目录
    21     path_list = path.split("/")  # 
    22 
    23     for this_path in path_list:
    24 
    25         if not os.path.exists(this_path):
    26             os.mkdir(this_path)
    27 
    28         print(os.getcwd())  # 当前路径
    29         os.chdir(this_path + "/")  # 切换到D:没成功 --> 此时还是当前路径
    30 
    31 
    32 my_makedirs("D:/xixi/haha/hanhan/daidai/ranran/taotao/huihui")
  • 相关阅读:
    关于c#中的委托和事件
    Unity3d中默认函数调用顺序(MonoBehaviour)
    u3d 摄像机详解
    u3d中的坐标系
    u3d中的向量 vector3 vector2
    u3d中的INput
    C#构造函数
    解析C#中[],List,Array,ArrayList的区别及应用
    Mybatis(七) mybatis的逆向工程的配置详解
    Mybatis(六) Spring整合mybatis
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12116859.html
Copyright © 2011-2022 走看看