Apabila berurusan dengan subproses, mengubah direktori kerja menimbulkan cabaran. Isu ini timbul apabila cuba menavigasi dalam subdirektori atau superdirektori. Walau bagaimanapun, kuncinya terletak pada memahami perbezaan antara memanggil atur cara dan melaksanakan arahan.
Dalam kod anda, anda cuba memanggil atur cara bernama "cd," yang merupakan pendekatan yang tidak sah. Sebaliknya, anda sepatutnya memanggil arahan bernama "cd."
Penjelasan Ralat:
Pernyataan "subprocess.call(['cd ..'])" mencetuskan OSError kerana "cd" ialah dalaman shell. Oleh itu, anda perlu melaksanakannya dalam cangkerang, seperti yang dilihat dalam pengubahsuaian berikut:
subprocess.call('cd ..', shell=True)
Mengapa "shell=True" Tidak Ada Maksud:
Walaupun ia pembetulan yang jelas, menggunakan "shell=True" sebenarnya tidak berguna. Ini kerana tiada proses boleh mengubah suai direktori kerja proses lain, bermakna subkulit akan menukar direktorinya dan keluar serta-merta.
Penyelesaian Alternatif:
Untuk berjaya menukar direktori kerja sebelum melaksanakan subproses, anda boleh menggunakan kaedah alternatif:
Menggunakan "os.chdir()":
wd = os.getcwd() os.chdir("/destination/directory") subprocess.Popen("ls") os.chdir(wd)
Menggunakan Parameter "cwd" dalam "subproses":
subprocess.Popen("ls", cwd="/destination/directory")
Pendekatan alternatif ini membolehkan anda menentukan direktori kerja sebelum melaksanakan subproses, memastikan bahawa arahan dilaksanakan dalam direktori yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Direktori Kerja untuk Subproses dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!