ホームページ  >  記事  >  バックエンド開発  >  サブプロセス使用時に現在のディレクトリを変更するにはどうすればよいですか?

サブプロセス使用時に現在のディレクトリを変更するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-08 07:29:02631ブラウズ

How to Change the Current Directory When Using Subprocess?

サブプロセスによる現在のディレクトリの変更

サブディレクトリまたはスーパーディレクトリ内でスクリプトを実行する場合、最初に目的のディレクトリに移動する必要があります。ただし、サブプロセスを使用して作業ディレクトリを変更すると、エラーが発生する可能性があります。この記事では、この問題を調査し、解決策を提供します。

この問題は、提供されているサンプル コードで示されているように、サブプロセスを通じて 'cd' コマンドを実行しようとすると発生します。サブプロセスはプログラムとして「cd」を呼び出そうとしますが、実際にはこれは「cd 」として呼び出す必要があるシェル内部コマンドです。

このエラーを回避するには、「subprocess.call」を使用してください。 ('cd ..',shell=True)' は、コマンドがシェルによって実行されるように指定します。ただし、子プロセスで現在のディレクトリを変更しても親プロセスのディレクトリには影響しないため、この方法は不要です。

代わりに、目的の機能を実現する別の方法があります。

  • os.chdir(): 親プロセスの作業ディレクトリを直接変更するには、このメソッドを使用します。たとえば、ルート ディレクトリで 'ls' を実行するには:
<code class="python">os.chdir("/")
subprocess.Popen("ls")
os.chdir(wd)</code>
  • 'cwd' パラメータ: を使用してサブプロセス呼び出し自体の作業ディレクトリを指定します。 「cwd」パラメータ。これにより、サブプロセスを実行する前に作業ディレクトリが変更されます:
<code class="python">subprocess.Popen("ls", cwd="/")</code>

これらのメソッドを採用すると、サブプロセスを使用して異なるディレクトリ内でスクリプトを実行するときに、現在のディレクトリを効果的に制御できます。

以上がサブプロセス使用時に現在のディレクトリを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。