python os.system("cd")

1298 ワード

最近スクリプトを書いて、ワンクリックでディレクトリを作成し、コードをダウンロードしました.ここではpythonのosモジュールを用いた.このモジュールはシステムコマンドを操作でき、windowsとLinuxに適しています.
os.System(‘mkdir hello’)では、helloのフォルダを作成できます.ただし、プログラムが実行すると:os.System(‘cd hello’)では、このコマンドが実行されますが、現在のシステムはhelloのディレクトリに切り替えられていません.
pythonのコマンドラインモードで操作してみました.
>>os.system('pwd')
>>./opt/code
>>os.system('cd hello')
>>0
>>os.system('pwd')
>>./opt/code

見えますosシステム(「cd hello」)は、現在のファイルディレクトリを変更していません.
資料を探してみるとpythonでosと中和していた.システムの実現メカニズムには関係がある.
Execute the command (a string) in a subshell. This is implemented by calling the Standard C function system(), and has the same limitations.
つまり、-親プロセスの環境変数(environment variables)は、デフォルトで子プロセスに渡されます(作業ディレクトリPWDは環境変数の1つです)-system関数を使用すると、親プロセスの環境変数に影響を与えることができません.System()の各操作はサブプロセスを開き、操作が完了すると親プロセスに戻りますが、親プロセスの環境変数は変更できません.
解決策は2つある:1,osを用いて提供されるosである.chdir(‘hello’)2は、複合文または複数の文osを用いる.System(‘cd hello&&ls’)またはos.system(‘cd hello’;’ls’)
もちろん、subprocessモジュールを使用する方法もあります.