📑
【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