Tôi đang sử dụng Python và Envoy. Tôi cần xóa tất cả các tệp trong một thư mục. Ngoài một số tệp, thư mục trống. Trong một thiết bị đầu cuối này sẽ là:Sử dụng rm * (ký tự đại diện) trong sứ giả: Không có tệp hoặc thư mục nào như vậy
rm /tmp/my_silly_directory/*
Thông thường dictates rằng trong phái viên, điều này chuyển thành:
r = envoy.run('rm /tmp/my_silly_directory/*')
Tuy nhiên:
r.std_err -> "rm: cannot remove `/tmp/my_silly_directory/*': No such file or directory"
Đương nhiên có những lựa chọn thay thế cho việc sử dụng phái viên tại đây trường hợp, tôi chỉ đơn giản là tự hỏi tại sao nó không hoạt động.
Bất kỳ manh mối nào?
Điều này nghe hoàn toàn đúng và có thể sẽ hoạt động với quy trình con. Tuy nhiên, trong sứ giả, cuộc gọi duy nhất hoạt động là 'envoy.run ([[" sh "," -c "," rm/tmp/my_silly_directory/* "]])' vì một lý do nào đó. Vì vậy, rất nhiều cho một đơn giản 'subprocess';) –
không thể có được điều này để làm việc với subprocess, bằng cách này. Lỗi tương tự như câu hỏi gốc. – Nate
@Nate: ['shutil.rmtree ('/ tmp/my_silly_directory /')'] (http://stackoverflow.com/questions/9106350/how-to-use-wildcards-with-envoy?lq=1#comment15551439_9109127) – jfs