タグ

ブックマーク / methane.hatenablog.jp (3)

  • Python でシェル経由でコマンド実行するときのバッドノウハウ - methaneのブログ

    PHPだってシェル経由でないコマンド呼び出し機能が欲しい コマンド実行でシェルが怖いなら使わなければいいじゃない どちらの記事でも Python の subprocess を使ってシェルを介在せずにコマンドを実行する方法が紹介されています。 シェルを介在すると、エスケープの問題考えるのが面倒だったり、 kill してみたらシェルだけ殺して肝心のコマンドがずっと残ってるというアホみたいな問題を避けられるのでお勧めです。 いい子はこれを使いましょう。 この記事ではどうしてもシェルの機能が使いたい場合や、 subprocess の PIPE の組み立てが面倒な場合のための、バッドノウハウを紹介していきます。 ちなみに、バッドノウハウと呼んでるのは、安全安心 one size fits all ではなく、メリット・デメリット・やり方をいちいち調べないといけなくて、しかもその調べる行為がほとんどコン

    Python でシェル経由でコマンド実行するときのバッドノウハウ - methaneのブログ
  • Python 2/3 両対応のために `unicode_literals` を使うべきか - methaneのブログ

    背景 Python 2 用のコードを書くときは、 Python 3 対応を見越して # -*- coding: utf-8 -*- from __future__ import division, print_function, absolute_import をテンプレとして書いています。 __future__ はファイルごとにバラバラだと混乱を招くので、今関わってるプロジェクトでもこれを新規ファイルのテンプレとして登録してもらってます。 Python 3 の構文、リテラルを有効にする __future__ のうち、 unicode_literals だけは今まで使っていなかったのですが、ふと「あ、やっぱり使うべきだな」と思いついたので、そのへんをまとめます。 第三の文字列型 native string Python 2 には2つの文字列型 str (bytes) と unicode が

    Python 2/3 両対応のために `unicode_literals` を使うべきか - methaneのブログ
  • print_function - methaneのブログ

    http://d.hatena.ne.jp/kazkun/20090529/1243560131 他の言語の経験が長いためか、Pythonの面倒なところ、嫌なところはたくさんでてくる。 ※例えばprintで最後を改行もせず空白も空けない事ができないとか、副作用を持ったプロシジャが値を返してくれないとか print は pythonic ではないと認識されていて、 py3k では関数になります。 Python 2.6 でも from __future__ import print_function とすると、 print("foo", 3, "baz", end='', sep=',') # foo,3,bazなんてことが出来ます。 さらに、 from functools import partial p = partial(print, file=open('/path/to/foo',

    print_function - methaneのブログ
  • 1