[解決済み] サブプロセスのディレクトリ変更
2022-06-15 21:32:20
質問
サブディレクトリ/スーパーディレクトリの中でスクリプトを実行したい(まずこのサブディレクトリ/スーパーディレクトリの中にいる必要がある)。私は得ることができない
subprocess
を私のサブディレクトリに入れることができません。
tducin@localhost:~/Projekty/tests/ve$ python
Python 2.7.4 (default, Sep 26 2013, 03:20:26)
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> import os
>>> os.getcwd()
'/home/tducin/Projekty/tests/ve'
>>> subprocess.call(['cd ..'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1308, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
PythonはOSErrorを投げますが、なぜかわかりません。既存のサブディレクトリに入ろうが、1つ上のディレクトリに入ろうが(上記のように)関係ありません - 私はいつも同じエラーで終わります。
どのように解決するのですか?
あなたのコードが行おうとしていることは、以下のようなプログラムを呼び出すことです。
cd ..
. あなたがしたいのは
cd
.
しかし
cd
はシェルの内部構造です。ですから、これを呼び出せるのは
subprocess.call('cd ..', shell=True) # pointless code! See text below.
しかし、そうすることは無意味である。 どのプロセスも他のプロセスの作業ディレクトリを変更できないので (これも少なくとも UNIX 系 OS では、Windows でも同様)、 この呼び出しはサブシェルにそのディレクトリを変更させ、即座に終了させることになります。
あなたが望むことは
os.chdir()
で、あるいは
subprocess
という名前のパラメータ
cwd
で、サブプロセスを実行する直前に作業ディレクトリを変更します。
例えば
ls
をルートディレクトリで実行する場合、次のどちらかを行います。
wd = os.getcwd()
os.chdir("/")
subprocess.Popen("ls")
os.chdir(wd)
または単に
subprocess.Popen("ls", cwd="/")
関連
-
Pythonの非常に便利な2つのデコレーターを解説
-
pythonを使ったオフィス自動化コード例
-
PicgoのイメージベッドツールをPythonで実装する
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
python implement mysql add delete check change サンプルコード
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】ネストされたディレクトリを安全に作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない