ホームページ > バックエンド開発 > Python チュートリアル > Python でコンソール出力をファイルにリダイレクトするにはどうすればよいですか?

Python でコンソール出力をファイルにリダイレクトするにはどうすればよいですか?

DDD
リリース: 2024-12-06 17:54:14
オリジナル
788 人が閲覧しました

How Can I Redirect Console Output to a File in Python?

コンソール出力をファイルにリダイレクトする

Python では、stdout ストリームをファイルにリダイレクトすることで、開発者は印刷出力をキャプチャして保存できます。これを実現するには、sys.stdout 属性を操作します。ただし、元の質問で概説されているアプローチでは望ましい出力が生成されないという最近の問題が報告されています。

問題の解決策

問題は、間違ったものにあります。印刷時の file= パラメーターの使用法。 Python バージョン 3.x 以降では、正しい構文は print('Filename:', filename, file=f) です。 Python 2.x の場合は、 print >> を使用します。 f, 'Filename:', filename.

または、with ステートメントを使用して標準出力をより簡潔にリダイレクトすることもできます。

with open('output.txt', 'w') as f:
    with redirect_stdout(f):
        print('Filename:', filename)
ログイン後にコピー

追加のメソッド

sys.stdout を使用する以外にも、リダイレクトする方法があります出力:

  • ファイル オブジェクトの使用: 以下に示すように、ファイル オブジェクトに直接書き込みます:

    with open('out.txt', 'w') as f:
      print('Filename:', filename, file=f)
    ログイン後にコピー
  • 外部シェル リダイレクト: > を使用します。出力をリダイレクトするシェル内の演算子:

    ./script.py > out.txt
    ログイン後にコピー

トラブルシューティング

提供されたスクリプトで、次のことを確認してください:

  • 指定されたパス (/home/xxx/nearline/bamfiles) には有効なファイルが含まれています.bam ファイル
  • glob.glob 関数はこれらのファイルを正しく識別します
  • samtools 実行可能ファイルへのフルパスは正しいです (/share/bin/samtools/samtools)

改善されました結果

修正された構文とファイル オブジェクトを使用すると、予期される出力は次のようになります。

Filename: ERR001268.bam
Readlines finished!
Mean: 233
SD: 10
Interval is: (213, 252)
ログイン後にコピー

この更新されたバージョンのスクリプトは出力をキャプチャし、出力にリダイレクトします。 txt ファイル。

以上がPython でコンソール出力をファイルにリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート