Perl与Python文件操作编程实例解析

34、编写一个程序,使用 readlink 测试符号链接,如果是符号链接,输出箭头和目标值。

#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

foreach my $file ( @ARGV ) {
    print $file;
    if( -d $file ) {
        say '/'
    } elsif( -x $file ) {
        say '*'
    } elsif( defined( my $target = readlink( $file ) ) ) {
        say " --> $target";
    }
}

35、编写一个程序,统计指定目录结构中每个目录下的文件、目录和符号链接的数量,并输出它们的平均数量和标准差。

以下是一个使用 Python 编写的程序,用于统计指定目录结构中每个目录下的文件、目录和符号链接的数量,并输出它们的平均数量和标准差:

import os
import math

def count_items_in_directory(dir_path):
    file_count = 0
    dir_count = 0
    symlink_count = 0
    for entry in os.scandir(dir_path):
        if entry.is_file():
            file_count += 1
        elif entry.is_dir():
            dir_count += 1
        elif entry.is_symlink():
            symlink_count += 1
    return file_count, dir_count, symlink_count

def calculate_stats(counts):
    n = len(counts)
    if n == 0:
        return 0, 0
    total = sum(counts)
    mean = total / n
    variance = sum((x - mean) ** 2 for x in counts) / n
    std_dev = math.sqrt(variance)
    return mean, std_dev

def main(root_dir):
    file_counts = []
    dir_counts = []
    symlink_counts = []
    for root, dirs, files in os.walk(root_dir):
        file_count, dir_count, symlink_count = count_items_in_directory(root)
        file_counts.append(file_count)
        dir_counts.append(dir_count)
        symlink_counts.append(symlink_count)
    file_mean, file_std_dev = calculate_stats(file_counts)
    dir_mean, dir_std_dev = calculate_stats(dir_counts)
    symlink_mean, symlink_std_dev = calculate_stats(symlink_counts)
    print(f"文件平均数量: {file_mean:.2f}, 标准差: {file_std_dev:.2f}")
    print(f"目录平均数量: {dir_mean:.2f}, 标准差: {dir_std_dev:.2f}")
    print(f"符号链接平均数量: {symlink_mean:.2f}, 标准差: {symlink_std_dev:.2f}")

if __name__ == "__main__":
    root_directory = input("请输入要统计的根目录路径: ")
    if os.path.isdir(root_directory):
        main(root_directory)
    else:
        print("输入的路径不是有效的目录。")

代码说明:

  1. count_items_in_directory 函数:该函数用于统计指定目录下的文件、目录和符号链接的数量。
  2. calculate_stats 函数:该函数用于计算给定列表中元素的平均值和标准差。
  3. main 函数:该函数遍历指定目录及其子目录,统计每个目录下的文件、目录和符号链接的数量,并调用 calculate_stats 函数计算平均值和标准差。最后输出结果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值