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

Python でサブプロセスの作業ディレクトリを変更するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 20:02:02271ブラウズ

How to Change the Working Directory for Subprocesses in Python?

サブプロセスのディレクトリ変更: 制限事項と代替案について

サブプロセスを扱う場合、作業ディレクトリを変更すると課題が生じます。この問題は、サブディレクトリまたはスーパーディレクトリ内を移動しようとすると発生します。ただし、重要なのは、プログラムの呼び出しとコマンドの実行の違いを理解することです。

コード内で、「cd」という名前のプログラムを呼び出そうとしていますが、これは無効なアプローチです。代わりに、「cd」という名前のコマンドを呼び出す必要があります。

エラーの説明:

「subprocess.call(['cd ..'])」ステートメント「cd」はシェル内部であるため、OSError がトリガーされます。したがって、次の変更に示すように、シェル内で実行する必要があります:

subprocess.call('cd ..', shell=True)

Why "shell=True" is Pointless:

にもかかわらず見かけ上の修正ですが、「shell=True」を使用するのは実際には無意味です。これは、どのプロセスも別のプロセスの作業ディレクトリを変更できないためです。つまり、サブシェルはディレクトリを変更してすぐに終了します。

代替解決策:

作業ディレクトリを正常に変更するにはサブプロセスを実行する前に、別の方法を利用できます:

  • 「os.chdir()」の使用:

    wd = os.getcwd()
    os.chdir("/destination/directory")
    subprocess.Popen("ls")
    os.chdir(wd)
  • 「サブプロセス」での「cwd」パラメータの使用:

    subprocess.Popen("ls", cwd="/destination/directory")

これらの代替アプローチを使用すると、サブプロセスを実行する前に作業ディレクトリを指定できます。コマンドが目的のディレクトリ内で実行されるようにします。

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

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