मेरे पास serial.dll
नाम की एक फाइल है। इस फ़ाइल की सामग्री किसी अन्य फ़ाइल का नाम है:
a-2ED1-7156.dll
मेरे पास एक ही निर्देशिका में a-2ED1-7156.dll
नामक 1 फ़ाइल भी है।
जब मैं यह जांचने की कोशिश करता हूं कि फ़ाइल serial.dll
से उसका नाम पढ़कर मौजूद है या नहीं:
f = open('serial.dll', 'r')
serials = f.read()
if os.path.exists(serials):
print("ok")
else:
print("no")
हमेशा परिणाम "नहीं"।
लेकिन:
file = 'a-2ED1-7156.dll'
if os.path.exists(file):
print("ok")
else:
print("no")
हमेशा सही परिणाम देता है।
मैं कैसे जांच सकता हूं कि फ़ाइल a-2ED1-7156.dll
को serial.dll
फ़ाइल से पढ़कर मौजूद है या नहीं?
Update Try:
f = open('serial.dll', 'r')
lines = f.readline()
for line in lines:
if os.path.exists(line):
print('ok')
else:
print("no")
results error:
no
no
no
no
no
no
no
no
no
no
no
ok
no
no
no
no
2 जवाब
आपकी समस्या यह है कि किसी फ़ाइल में पंक्तियाँ नई-पंक्ति वर्ण के साथ समाप्त हो सकती हैं। फ़ाइल नामों में आमतौर पर वह वर्ण नहीं होता... उदाहरण के लिए, अभी आप जाँच कर रहे हैं कि क्या फ़ाइल a-2ED1-7156.dll\n
मौजूद है - जो नहीं है। आपको बस strip()
पहले की पंक्तियों की आवश्यकता है उन्हें फाइलों के रूप में जांचना:
f = open('serial.dll')
for line in f:
filename = line.strip()
if os.path.exists(filename):
print(f"{filename} exists")
else:
print(f"{filename} doesn't exist")
मान लें कि प्रत्येक फ़ाइल एक अलग पंक्ति में है, आप इसका उपयोग कर सकते हैं
lines = f.readlines()
for line in lines:
if os.path.exists(line):
print('ok')
या केवल तभी प्रिंट करें जब सभी फाइलें मौजूद हों, जो इस बात पर निर्भर करता है कि आप वास्तव में क्या चाहते हैं।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।