2012-10-04 14 views
11

विंडो में कुछ प्रक्रिया (पीआईडी) द्वारा खुली फ़ाइल का नाम कैसे मुद्रित करें? या सभी प्रक्रियाएं (पीआईडी) वर्तमान में एक फाइल खोलती हैं।
प्रक्रिया एक्सप्लोरर एक उपयोगिता एक ही काम करता है। लेकिन यह कैसे उल्लेख नहीं किया जाता है? कोई भी /proc फाइल सिस्टम विंडोज़ में मौजूद चीज़ों की तरह?खिड़की में एक प्रक्रिया द्वारा खोली गई फाइलों का नाम?

Can we read any Window's Registry? 
I wants to write a programming code And I rarely work on windows. 

गॉट अजगर में दो समाधान:
1. आयात psutil
2. आयात win32api, win32con, win32process

लेकिन यह अभी भी मेरे लिए एक सवाल है!
1. ये पुस्तकालय कैसे काम करता है?
2. कोई भी रजिस्टर, मेमोरी या वर्चुअल फाइल सिस्टम इस जानकारी को रखता है?

यदि विंडो में यह संभव है, यह जानकारी तस्क प्रबंधक में क्यों नहीं मौजूद है?

उत्तर

22

यहां पाइथन में प्लेटफॉर्म स्वतंत्र समाधान है।

import psutil 
    p = psutil.Process(os.getpid()) # or PID of process 
    p.open_files() 

तो मैं तुम्हें psutil पैकेज का उल्लेख यह जानकारी प्रक्रिया चल

+0

खिड़की पर काम करेगा? .. क्या आप मुझे जवाब दे सकते हैं कि psutil कैसे काम करता है? –

+0

"पाइथन के लिए क्रॉस-प्लेटफ़ॉर्म प्रक्रिया और सिस्टम उपयोगिताओं मॉड्यूल" यह psutil क्या कहता है। निश्चित रूप से काम करें। –

1

यहाँ पर है Win32 एपीआई का उपयोग कर पीआईडी ​​से एक फ़ाइल नाम पाने के लिए एक तरह से प्राप्त करने के लिए भी अच्छा कार्य करता है:

import win32api, win32con, win32process 

handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, pid) #get handle for the pid 
filename = win32process.GetModuleFileNameEx(handle, 0) #get exe path & filename for handle 

यह केवल खिड़कियों पर काम करता है (जाहिर है)।

+0

यह पुस्तकालय कैसे काम करता है? –

+1

Win32 API बाइंडिंग, या [PyWin32] (http://sourceforge.net/projects) के साथ शिप करने वाले पायथन संस्करणों के लिए [विंडोज़ के लिए पायथन] (http://www.python.org/getit/windows/) देखें।/pywin32 /) पैकेज। विन 32 एपीआई विंडोज़ में होने वाली लगभग हर चीज के लिए एक निश्चित एपीआई है, और यह लाइब्रेरी उन एपीआई कार्यों को बाइंडिंग प्रदान करती है। –

+0

आपके उत्तरों के लिए धन्यवाद –

संबंधित मुद्दे