Python functions。現在のディレクトリ内で、os.system("ls")
がファイルを見つける間、コマンドsubprocess.Popen(["wc -l filename"], stdout=subprocess.PIPE
) 動作しません。
ここに私のコードがあります:
>>> import os
>>> import subprocess
>>> os.system("ls")
sorted_list.dat
0
>>> p = subprocess.Popen(["wc -l sorted_list.dat"], stdout=subprocess.PIPE)File "<stdin>", line 1, in <module>
File "/Users/a200/anaconda/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/Users/a200/anaconda/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
引数をリストとして渡す必要があります(推奨):
subprocess.Popen(["wc", "-l", "sorted_list.dat"], stdout=subprocess.PIPE)
それ以外の場合、Shell=True
文字列全体をコマンドとして使用する場合は、"wc -l sorted_list.dat"
を渡す必要があります(推奨されません。セキュリティ上の問題になる可能性があります)。
subprocess.Popen("wc -l sorted_list.dat", Shell=True, stdout=subprocess.PIPE)
Shell=True
セキュリティの問題の詳細をお読みください こちら 。
このエラーは、wc -l sorted_list.dat
という名前のコマンドを実行しようとしているため、つまり"/usr/bin/wc -l sorted dat"
のような名前のfileを見つけようとしているために発生します。
引数を分割します:
["wc", "-l", "sorted_list.dat"]