まず、これを行うためのより良い方法があることはわかっています。私はサブプロセスの最も基本的な動作を学びたいと思っています.Popen()はさまざまなUNIXコマンドと対話するときに使います。私はディレクトリのナビゲーションに何か間違っているし、私はそれが何であるか分かりません。私は自分のREPLとしてiPythonを実行しているので、lsコマンドは現在の作業ディレクトリにファイルを表示します。Linuxのディレクトリを移動するためにpythonサブプロセスモジュールを使用する際に助けが必要
誰かが間違っていることを教えてください!
In [61]: newtree_dirs
Out[61]:
['10dir',
'1dir',
'2dir',
'3dir',
'4dir',
'5dir',
'6dir',
'7dir',
'8dir',
'9dir']
In [62]: ls
10dir/ 1dir/ 2dir/ 3dir/ 4dir/ 5dir/ 6dir/ 7dir/ 8dir/ 9dir/
In [63]: for folder in newtree_dirs:
...: p1 = sub.Popen(['cd', './{}'.format(folder)])
...: p1.communicate()
...: foo = (i for i in xrange(10))
...: for num in foo:
...: p2 = sub.Popen(['touch', '{}file'.format(num)])
...: p2.communicate()
...: p3 = sub.Popen(['cd', '..'])
...: p3.communicate()
...:
...:
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-63-bb6e77faf97b> in <module>()
1 for folder in newtree_dirs:
----> 2 p1 = sub.Popen(['cd', u'./{}'.format(folder)])
3 p1.communicate()
4 bar = (i for i in xrange(10))
5 for num in bar:
この例外が発生した後、さらなる例外は、欠落しているディレクトリのサブプロセスモジュールのエラー処理に下がります。私のcwdのディレクトリ名は同じで、何が起こっているのかわかりません。
正確にはエラーメッセージは何ですか?単一のPopen(cd)コマンドをハードコーディングしてみて、それがループするのではなく、単独で動作するかどうか確認してください。 –
「OSError:[Errno 2] No ** file ** or directory」というエラーが表示されますか? –