python - करण - निर्देशिका w/अजगर से फ़ाइल नाम पढ़ें




बर्मी अजगर (3)

मैं एक pygame निष्पादन योग्य बनाने की कोशिश कर रहा हूँ मैं निम्न सेटअप फ़ाइल का उपयोग करेगा:

from distutils.core import setup
import py2exe

setup( 
  console = [ "game.py" ],
  author = "me",
  data_files = [ ( directory, [ file_1, file_2... ] ) ]
)

मैं इसे एक साधारण गेम पर ठीक काम करने के लिए प्राप्त कर लिया है, लेकिन जिस गेम को मैं पैकेज करना चाहता हूं वह है- 700 छवि फ़ाइलें मेरा प्रश्न यह है, क्या सभी फाइल नामों को निर्देशिका से पढ़ने का एक आसान तरीका है, इसलिए मुझे प्रत्येक को अलग से सूचीबद्ध करने की ज़रूरत नहीं है?

हालांकि कुछ ऐसी फाइलें हैं जो अनुक्रम में गिने जा रही हैं, उनमें से ज्यादातर का एक अलग रूट नाम है, इसलिए एक लूप लिखना जिससे उपयुक्त स्ट्रिंग एक विकल्प नहीं है।

धन्यवाद


इसे इस्तेमाल करे

data_files = [directory, ...]  # whatever you want to put specifically.
data_files += [file for file in os.listdir('images') if os.path.isfile(file)]  # for adding your image files

os मॉड्यूल में एक सूची है जिसे listdir कहा जाता है, जो पथ लेता है और सामग्री को एक सूची के रूप में देता है।


import os

data_files = [(x[0], x[2]) for x in os.walk(root_dir)]

http://docs.python.org/library/os.html#os.walk

यह आपको प्रत्येक उपनिर्देशिका के लिए फ़ाइलें देगा जो root_dir (साथ-साथ root_dir रूप में, root_dir ), प्रारूप में ट्यूपल्स के रूप में [(dirpath1, [file1, file2, ...]), (dirpath2, [file3, file4, ...]), ...]

मैंने आपको यह मेरा जवाब दिया क्योंकि मैं मानता हूं कि (या बजाय, उम्मीद कर रहा हूं), इतनी सारी फाइलों के साथ, आप उन सभी को एक ही निर्देशिका में बिना उपनिर्देशिका के साथ ठीक से संगठित करने के बजाय रख-रखाव कर रहे हैं

यह कुछ समय हो गया है, लेकिन इस पर वापस आ रहा है अब मुझे पता है कि फ़ाइलों की लंबी सूची के लिए, जनरेटर अभिव्यक्ति शायद अधिक कुशल होगा ऐसा करने के लिए, एक बहुत ही सरल परिवर्तन की आवश्यकता है; कोष्ठक के साथ बाह्य कोष्ठक की जगह, यानी

import os
data_file_gen = ((x[0], x[2]) for x in os.walk(root_dir))

और data_file_gen तब भी इस्तेमाल किया जा सकता है, जहां data_files पर data_files गया था (मानते हुए कि आप केवल एक बार जनरेटर का उपयोग कर रहे हैं; अगर जनरेटर को कई बार उपयोग किया जाता है, तो आपको प्रत्येक उपयोग के लिए जनरेटर को पुन: तैयार करना होगा। ऐसे मामलों में यह बेहतर हो सकता है सिर्फ सूची पद्धति का उपयोग करने के लिए जब तक मेमोरी एक समस्या नहीं बनती।)।





distutils