📑

【Python】受け取った引数をファイルに出力する

に公開

概要

・ get_arg.py実行時に受け取った引数を指定したファイルに出力します。(改行)

サンプルコード

import os
import sys

def write_args_to_file(file_path, args):
    """
    引数を指定したファイルに出力する。
    :param file_path: 出力先のファイルパス
    :param args: コマンドライン引数のリスト
    """
    # 出力先のディレクトリが存在しない場合は作成
    os.makedirs(os.path.dirname(file_path), exist_ok=True)

    with open(file_path, 'w') as file:
        for arg in args:
            file.write(arg + '\n')
    print(f"引数を '{file_path}' に出力しました。")

if __name__ == "__main__":
    # コマンドライン引数を取得
    if len(sys.argv) > 11:  # スクリプト名を含むため、最大11個
        print("引数は10個以下にしてください。")
        sys.exit(1)

    # 出力先のファイルパスを指定
    output_file = "/tmp/sample/output.txt"  # 必要に応じて変更可能

    # 引数をファイルに出力
    write_args_to_file(output_file, sys.argv[1:])

実行例

$ python get_arg.py test 1234 567 aiueo
引数を '/tmp/sample/output.txt' に出力しました。
$ cat /tmp/sample/output.txt 
test
1234
567
aiueo
$ 

・流れの説明

  • get_arg.py に引数をつけて実行する。
  • cat で 引数の内容を出力したファイルの中身を確認する

利用例

・プログラム実行時に引数を受け取って実行しているようだが、どんな引数渡されているかよくわからない時・・・・。(渡される引数がわかれば、ターミナルで同じように実行できる。)

追記 perl ver

use strict;
use warnings;
use File::Path qw(make_path);

sub write_args_to_file {
    my ($file_path, @args) = @_;

    # 出力先のディレクトリが存在しない場合は作成
    my $dir = $file_path =~ s|/[^/]+$||r; # ディレクトリ部分を抽出
    unless (-d $dir) {
        make_path($dir) or die "フォルダ作成に失敗しました: $!";
    }

    # ファイルに引数を書き込む
    open my $fh, '>', $file_path or die "ファイルを開けません: $!";
    foreach my $arg (@args) {
        print $fh "$arg\n";
    }
    close $fh;
    print "引数を '$file_path' に出力しました。\n";
}

# メイン処理
if (@ARGV > 10) {
    print "引数は10個以下にしてください。\n";
    exit 1;
}

# 出力先のファイルパスを指定
my $output_file = "/tmp/sample/output.txt"; # 必要に応じて変更可能

# 引数をファイルに出力
write_args_to_file($output_file, @ARGV);

実行例

$ perl test.pl 
引数を '/tmp/sample/output.txt' に出力しました。
$ cat /tmp/sample/output.txt 
$ 
$ perl test.pl ARG1 123 TEST 2025/01
引数を '/tmp/sample/output.txt' に出力しました。
$ cat /tmp/sample/output.txt 
ARG1
123
TEST
2025/01
$ 

引数を指定したいなかった場合は空っぽのファイルが作成される。

Discussion