文件操作

切换文件目录,并显示当前目录下的文件信息

import os
import subprocess

path = "/etc"
os.chdir(path)
#显示当前路径
ret = subprocess.getoutput('pwd')
print(ret)
#显示当前目录路径文件夹
print("当前路径下的目录:", os.listdir(os.getcwd()))
#显示文件
files = [f for f in os.listdir() if os.path.isfile(f)]
print(files)
#显示目录
files = [f for f in os.listdir() if os.path.isdir(f)]
print(files)

glob显示指定目录文件

import os
import glob

list = glob.glob("/tmp/*.txt")
print(list)

批量创建文件

import os


def touchtext(paths):
    for i in range(1, 21, 1):
        filepath = os.path.join(paths, f"{i}.txt")
        txtcontent = filepath + " write information"
        with open(filepath, "a+", encoding="utf-8") as f:
            f.write(txtcontent)


touchtext("/tmp")

自定义文件名创建文件

import os


def createdir(dirs):
    filepath = os.path.join(dirs, "filename.txt")
    with open(filepath, "r", encoding="utf-8") as f:
        #列表推导建立新的列表结构,并用strip去掉前后空格
        name_list = [i.strip() for i in f.readlines()]
        print(name_list)
    for name in name_list:
        with open(f"/tmp/{name}", "w", encoding="utf-8") as f:
            f.write("")


createdir("/tmp")

修改文件名称

import os

path1 = "/tmp"
extension = ".txt"

list1 = os.listdir(path1)
list2 = []

for cur_file in list1:
    path = os.path.join(path1, cur_file)
    if os.path.isfile(path):
        if path.endswith(extension) and len(cur_file) <= 5:
            #动态添加列表,这里没有作用
            list2.append(cur_file)
            dst_name = path1 + "/" + "0" + cur_file
            sre_name = path
            os.rename(sre_name, dst_name)


print(list2)

删除文件夹,含非空文件夹,两种方法:引用shutil或函数逐层处理

import shutil

shutil.rmtree(r'/tmp/abc')
import os


def rmdir(dir):
    if os.path.isdir(dir):
        for file in os.listdir(dir):
            print(file)
            rmdir(os.path.join(dir, file))
        if os.path.exists(dir):
            os.rmdir(dir)
            print(dir, "删除文件夹")
    else:
        if os.path.exists(dir):
            os.remove(dir)
            print(dir, "删除文件")


rmdir("/tmp/abc")

删除文件

import os

def delete_files(directory, extension):
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(extension):
                file_path = os.path.join(root, file)
                os.remove(file_path)
                print(f"Deleted file: {file_path}")

# 设置要删除文件的目录和文件扩展名
directory = "/path/to/directory"
extension = ".txt"

# 调用删除文件函数
delete_files(directory, extension)

按创建时间删除文件

import os
import time

def delete_files_by_days(directory, days):
    current_time = time.time()
    seconds_in_a_day = 24 * 60 * 60

    for root, dirs, files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root, file)
            file_creation_time = os.path.getctime(file_path)
            days_since_creation = (current_time - file_creation_time) / seconds_in_a_day

            if days_since_creation > days:
                os.remove(file_path)
                print(f"Deleted file: {file_path}")

# 设置要删除文件的目录和文件创建天数
directory = "/path/to/directory"
days = 30

# 调用按文件创建天数删除文件函数
delete_files_by_days(directory, days)