2010-10-15 18 views
30

में एक स्ट्रिंग के लिए एक पूर्णांक कास्टिंग मैं नाम fileX.txt साथ पाठ फ़ाइलों की एक संख्या जहां X कुछ पूर्णांक है उत्पन्न करने में सक्षम होना चाहता हूँ फ़ाइल नाम = "मुझे" + मैं भाग तो मैं नाम के साथ फ़ाइलों की एक सूची प्राप्त: "ME0.txt", "ME1.txt", "ME2.txt", और आदिअजगर

+2

पाइथन (अधिक) दृढ़ता से पर्ल और रेक्स जैसी भाषाओं की तुलना में टाइप किया गया है, और निहित प्रकार की अभिव्यक्ति नहीं करेगा rsions। –

उत्तर

69
x = 1 
y = "foo" + str(x) 

कृपया अजगर दस्तावेज़ पढ़ें

key =10 

files = ("ME%i.txt" % i for i in range(key)) 

#opening 
files = [ open(filename, 'w') for filename in files] 

# processing 
for i, file in zip(range(key),files): 
    file.write(str(i)) 
# closing 
for openfile in files: 
    openfile.close() 
+14

अगर हम सनकी होने जा रहे हैं, तो कृपया त्रुटि संदेश पढ़ें और कुछ सेकंड के लिए सोचें " –

19

पहले 2.6 अजगर संस्करणों के लिए,

filename = "ME%d.txt" % i 

2,6 के लिए: string formatting operator % का उपयोग

filename = "ME{0}.txt".format(i) 

हालांकि पहला उदाहरण अभी भी 2.6 में काम करता है, दूसरा एक पसंद किया जाता है: और बाद में, str.format() विधि का उपयोग करें।

आप 10 से अधिक फ़ाइलें हैं, तो इस तरह से नाम के लिए, आप अग्रणी शून्य जोड़ने के लिए चाहते हो सकता है इतना है कि फ़ाइलें निर्देशिका लिस्टिंग में सही ढंग से आदेश दिया जाता है:

filename = "ME%02d.txt" % i 
filename = "ME{0:02d}.txt".format(i) 

यह ME00.txt तरह ME99.txt लिए फ़ाइल नाम का उत्पादन करेगा । अधिक अंकों के लिए, उच्च संख्या वाले उदाहरणों में 2 को प्रतिस्थापित करें (उदाहरण के लिए, ME{0:03d}.txt)।

5

कोई एक:

"ME" + str(i) 

या:

"ME%d" % i 

दूसरा एक आम तौर पर पसंद किया जाता है, खासकर यदि आप कई टोकन से एक स्ट्रिंग का निर्माण करना चाहते। पूरे के रूप में

"ME%d.txt" % (num,) 
4

आप str() का उपयोग यह कास्ट करने के लिए कर सकते हैं या formatters: