Tôi có đoạn mã python sau đây. Mã sẽ lấy đường dẫn đầu ra nguồn, tạm thời và cuối cùng từ người dùng và trích xuất một số tệp tiêu đề. Chương trình chạy hoàn hảo khi chỉ định đường dẫn đầy đủ từ thiết bị đầu cuối, nhưng khi thiết bị đầu cuối ra lệnh như sau:
Python Get-iOS-Private-SDKs.py -p/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/PrivateFrameworks/-t ./tmp -f ./Test.txt
, thì các tệp tiêu đề, thay vì được tạo trong thư mục tmp của thư mục hiện tại, chúng sẽ đi vào một vòng lặp đệ quy. Mỗi thư mục lần lượt có một thư mục tmp và nó cứ lặp đi lặp lại. Có ai có thể cho tôi biết tại sao không?
nhập optparse,os,tiến trình con
from glob import glob
trình phân tích cú pháp = optparse.OptionParser()
Parser.add_option("-p","--path", help = "Đường dẫn nguồn", dest = "Input_Path", metavar = "PATH")
Parser.add_option("-t","--temp",help = "Đường dẫn thư mục tạm thời", dest = "Temp_Path", metavar = "PATH")
parser.add_option("-f","--file",help = "Đường dẫn đích",dest ="Output_Path",metavar = "PATH")
(opts,args) =parser.parse_args()
if (opts.Input_Path là Không hoặc opts.Output_Path là Không hoặc opts.Temp_Path là Không):
print "Lỗi: Vui lòng chỉ định đường dẫn cần thiết"
khác:
os.makedirs(opts.Temp_Path + "Private_SDK")
dest = opts.Temp_Path + "Private_SDK/"
đối với thư mục gốc, thư mục con, tệp trong os.walk(opts.Input_Path):
cho tập tin trong tập tin:
os.makedirs(dest + file)
os.chdir(đích + tập tin)
lệnh = ['/opt/local/bin/class-dump','-H',os.path.join(root,file)]
subprocess.call(lệnh)
Thư mục cũng không được tạo dưới dạng Private_SDK mà là tmpPrivate_SDK. Về cơ bản, nếu tôi có thể lấy được đường dẫn đầy đủ từ thiết bị đầu cuối khi ./tmp được đề cập, tôi có thể chạy chương trình!
os.makedirs nhận các đường dẫn tương đối (dựa trên ./tmp) và được gọi sau khi gọi chdir (xem phần khởi tạo và sử dụng đích)
Tôi là một lập trình viên xuất sắc, rất giỏi!