Perl与Python文件操作及链接创建示例

100、编写一个程序,提示用户输入一个目录名(默认为用户主目录),使用目录句柄列出该目录下的所有文件。

以下是一个满足需求的 Perl 程序示例:

use strict;
use warnings;
use File::HomeDir;

# 提示用户输入目录名,默认为用户主目录
print "请输入一个目录名(留空则使用用户主目录):";
my $dirname = <STDIN>;
chomp $dirname;
$dirname = File::HomeDir->my_home unless $dirname;

# 打开目录
opendir my $dh, $dirname or die "无法打开目录 $dirname: $!";

# 读取并列出目录下的所有文件
while (my $name = readdir $dh) {
  next if $name =~ /^\./; # 跳过隐藏文件
  print $name, "\n";
}

# 关闭目录
closedir $dh;

这个程序首先提示用户输入目录名,如果用户没有输入,则使用用户主目录。然后打开该目录,读取并列出所有非隐藏文件,最后关闭目录。

101、编写一个程序,删除命令行参数指定的所有文件,并在删除失败时给出警告。

以下是一个满足需求的 Perl 程序示例:

foreach my $file (@ARGV) {
    if (!unlink($file)) {
        warn "无法删除文件 $file: $!\n";
    }
}

上述程序会遍历命令行参数中的所有文件,尝试删除它们。若删除失败,会给出相应的警告信息。

102、编写一个程序,为命令行参数指定的源文件创建一个硬链接到目标文件,如果目标文件是一个目录,则将源文件的硬链接创建到该目录下。

以下是一个满足需求的 Perl 程序示例:

#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;

# 获取命令行参数
my ($source, $target) = @ARGV;

# 检查参数是否足够
if (!defined $source || !defined $target) {
    die "Usage: $0 <source_file> <target_file_or_directory>\n";
}

# 检查源文件是否存在
if (! -e $source) {
    die "Source file $source does not exist.\n";
}

# 检查目标是否为目录
if (-d $target) {
    # 如果是目录,构建目标文件路径
    my $filename = (File::Spec->splitpath($source))[2];
    $target = File::Spec->catfile($target, $filename);
}

# 创建硬链接
if (link($source, $target)) {
    print "Hard link created successfully from $source to $target.\n";
} else {
    die "Failed to create hard link: $!\n";
}

将上述代码保存为一个 .pl 文件,例如 create_hard_link.pl ,然后在命令行中运行,如:

perl create_hard_link.pl source_file.txt target_directory

或者

perl create_hard_link.pl source_file.txt target_file.txt

103、编写一个程序,根据命令行参数的 -s 选项,为命令行参数指定的源文件创建一个符号链接或硬链接到目标文件,如果目标文件是一个目录,则将源文件的链接创建到该目录下。

以下是一个使用 Python 实现该功能的示例代码:

import os
import sys

is_symbolic = False
if '-s' in sys.argv:
    is_symbolic = True
    sys.argv.remove('-s')

if len(sys.argv) != 3:
    print('用法: python script.py [-s] 源文件 目标文件')
    sys.exit(1)

source_file = sys.argv[1]
target = sys.argv[2]

if os.path.isdir(target):
    target = os.path.join(target, os.path.basename(source_file))

if is_symbolic:
    try:
        os.symlink(source_file, target)
        print(f'符号链接创建成功: {target}')
    except F
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值