Python は初めてで、簡単なデータ処理スクリプトを作成する必要があります。コマンドラインのプログラム引数からファイル名を取得し、最初の引数の値を出力するだけの非常に単純なスクリプトを作成しました。
import sys
if __name__ == '__main__':
fileName = sys.argv[1]
print "File name is %s" % fileName
次に、プログラムを実行します。 myProgram.py ~/datadir/file.txt
引数が実際にパスであることを python に伝えるものは何もないので、それ自体を推測して ~ を完全修飾パスに解決し、プログラムが出力することに驚いています。
File name is /Users/<my_username>/datadir/file.txt
ただし、コマンドライン引数を引用符で囲むことで回避できます。
myProgram.py "~/datadir/file.txt"
File name is ~/datadir/file.txt
私は Python を学習中なので、誰かがこの暗黙の解決を駆動する理由を説明できるのではないかと思っていました。たとえば、~ で始まるものはすべてパスであると自動的に想定しますか?