Apakah ada cara untuk menentukan direktori perintah yang sedang berjalan di Python subprocess.Popen()
?
Sebagai contoh:
Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Skrip Python saya terletak di C:\programs\python
Apakah mungkin dijalankan C:\mytool\tool.exe
di direktori D:\test\local
?
Bagaimana cara mengatur direktori kerja untuk sub-proses?
python
subprocess
popen
icn
sumber
sumber
Jawaban:
subprocess.Popen
mengambilcwd
argumen untuk mengatur Direktori Kerja Saat Ini; Anda juga ingin melepaskan backslash Anda ('d:\\test\\local'
), atau menggunakanr'd:\test\local'
agar backslash tidak diartikan sebagai escape sequence oleh Python. Cara Anda menulisnya,\t
bagian itu akan diterjemahkan ke a tab.Jadi, baris baru Anda akan terlihat seperti:
Untuk menggunakan jalur skrip Python Anda sebagai cwd,
import os
dan tentukan cwd menggunakan ini:sumber
shell=False
, Anda tidak dapat menggunakan shell builtin seperticd
: yaitu, coba ini di Linux dengan shell kedua cara:subprocess.Popen("cd /tmp; pwd")
subprocess.call(["C:/Users/Bob/Some.exe"], cwd="C:/Users/Jane/")
dan berfungsi dengan baik