Lua Academy · पाठ

फ़ाइल की सामग्री पढ़ना

file:read() मेथड से पंक्तियाँ, बाइट और पूरी सामग्री पढ़ें।

पाठ 2, कुल 4 में से12 चरण

फ़ाइल की सामग्री पढ़ना, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

पूरी फ़ाइल पढ़ना

पूरी फ़ाइल को एक स्ट्रिंग में पढ़ने के लिए f:read("a") (या "*a") का उपयोग करें। छोटी से मध्यम आकार की फ़ाइलों के लिए यह सरल और उपयुक्त है। बहुत बड़ी फ़ाइलों के लिए मेमोरी संबंधी समस्याओं से बचने हेतु खंडों में या पंक्ति-दर-पंक्ति पढ़ें।

local f = io.open("config.txt", "r")
if f then
  local content = f:read("a")
  f:close()
  print("Size:", #content, "bytes")
  print(content)
end

पंक्ति-दर-पंक्ति पढ़ना

f:read("l") अगली पंक्ति पढ़ता है और नई पंक्ति हटा देता है। EOF पर nil लौटाता है। प्रत्येक पंक्ति को प्रोसेस करने के लिए while के साथ लूप चलाएँ। f:lines() इसका प्रचलित संक्षिप्त रूप है और वही काम करता है।

local f = io.open("data.txt", "r")
if f then
  local line = f:read("l")
  while line ~= nil do
    print(line)
    line = f:read("l")
  end
  f:close()
end

-- Equivalent with for loop:
-- for line in io.lines("data.txt") do print(line) end

बाइट की निश्चित संख्या पढ़ना

ठीक n बाइट पढ़ने के लिए f:read(n) में एक संख्या दें। यह अधिकतम n बाइट की स्ट्रिंग लौटाता है (EOF पहले पहुँचने पर इससे कम), या EOF पर nil लौटाता है। इसका उपयोग बाइनरी प्रोटोकॉल या संरचित फ़ाइल फ़ॉर्मैट के लिए करें।

local f = io.open("binary.dat", "rb")
if f then
  -- Read 4-byte header
  local header = f:read(4)
  if header then
    print("Header bytes:", #header)
    for i = 1, #header do
      io.write(string.format("%02X ", header:byte(i)))
    end
    print()
  end
  f:close()
end

एक संख्या पढ़ना

f:read("n") फ़ाइल से अगली संख्या पढ़ता है और खाली स्थानों को छोड़ देता है। यह Lua संख्या लौटाता है, या अगला टोकन संख्या न होने पर nil लौटाता है। संरचित संख्यात्मक डेटा फ़ाइलें पढ़ने में यह उपयोगी है।

-- File contains: "10 20 30.5 40"
local f = io.open("nums.txt", "r")
if f then
  local total = 0
  local n = f:read("n")
  while n do
    total = total + n
    n = f:read("n")
  end
  f:close()
  print("Sum:", total)
end

फ़ाइलों में स्थान बदलना

f:seek(whence, offset) फ़ाइल की स्थिति बदलता है। whence "set" (आरंभ से), "cur" (वर्तमान स्थिति से), या "end" (अंत से) हो सकता है। यह नई निरपेक्ष स्थिति लौटाता है। फ़ाइलों को फिर से पढ़ने या उनमें किसी अन्य स्थान पर जाने के लिए इसका उपयोग करें।

local f = io.open("test.txt", "r")
if f then
  -- Jump to end, get file size
  local size = f:seek("end")
  print("File size:", size, "bytes")
  
  -- Seek back to start
  f:seek("set", 0)
  local first_line = f:read("l")
  print("First line:", first_line)
  f:close()
end

CSV फ़ाइलें पढ़ना

CSV डेटा को पंक्ति-दर-पंक्ति पार्स करें: प्रत्येक पंक्ति पढ़ें, फिर string.gmatch का उपयोग करके अल्पविराम से विभाजित करें। वास्तविक उपयोग के लिए उद्धृत फ़ील्ड और उद्धरणों के भीतर मौजूद अल्पविरामों को संभालें, लेकिन सरल डेटा के लिए बुनियादी विभाजन पर्याप्त है।

local function parseCSV(path)
  local rows = {}
  for line in io.lines(path) do
    local row = {}
    for field in string.gmatch(line, "([^,]+)") do
      row[#row+1] = field
    end
    rows[#rows+1] = row
  end
  return rows
end

-- Example: "Alice,30,Engineer"
-- => {{"Alice","30","Engineer"}}

कॉन्फ़िगरेशन फ़ाइलें पढ़ना

सरल key=value कॉन्फ़िगरेशन फ़ॉर्मैट में: पंक्ति-दर-पंक्ति पढ़ें, टिप्पणियों और खाली पंक्तियों को छोड़ें, और string.match से key=value युग्म पार्स करें।

local function loadConfig(path)
  local cfg = {}
  for line in io.lines(path) do
    -- Skip comments and blank lines
    if not line:match("^%s*#") and line:match("%S") then
      local k, v = line:match("^%s*(%w+)%s*=%s*(.-)%s*$")
      if k then cfg[k] = v end
    end
  end
  return cfg
end

local config = loadConfig("app.conf")
print(config.host, config.port)

खंडों में पढ़ना

बड़ी फ़ाइलों के लिए सब कुछ मेमोरी में लोड करने से बचने हेतु निश्चित आकार के खंडों में पढ़ें। प्रत्येक खंड प्राप्त होते ही उसे प्रोसेस करें। उपलब्ध RAM से बड़ी फ़ाइलों के लिए यह आवश्यक है।

local function processLarge(path, chunkSize)
  chunkSize = chunkSize or 4096
  local f, err = io.open(path, "rb")
  if not f then return nil, err end
  local totalBytes = 0
  local chunk = f:read(chunkSize)
  while chunk do
    totalBytes = totalBytes + #chunk
    -- process chunk here
    chunk = f:read(chunkSize)
  end
  f:close()
  return totalBytes
end

प्रति पंक्ति कई मान पढ़ना

जब प्रत्येक पंक्ति में रिक्त स्थान या टैब से अलग किए गए कई मान हों, तो उन्हें निकालने के लिए string.match या string.gmatch का उपयोग करें। यह तरीका सरल संरचित टेक्स्ट फ़ाइलों के लिए उपयुक्त है।

-- File: "Alice 95 A\nBob 87 B"
local results = {}
for line in io.lines("grades.txt") do
  local name, score, grade = line:match("(%S+)%s+(%d+)%s+(%S+)")
  if name then
    results[#results+1] = {
      name=name,
      score=tonumber(score),
      grade=grade
    }
  end
end

for _, r in ipairs(results) do
  print(r.name, r.score, r.grade)
end

io.lines का संक्षिप्त तरीका

io.lines(filename) फ़ाइल खोलता है, पंक्ति इटरेटर लौटाता है और काम पूरा होने पर फ़ाइल बंद कर देता है। हैंडल को स्पष्ट रूप से संभाले बिना फ़ाइल को पंक्ति-दर-पंक्ति पढ़ने का यह सबसे संक्षिप्त तरीका है।

-- Count non-empty lines
local count = 0
for line in io.lines("data.txt") do
  if line:match("%S") then
    count = count + 1
  end
end
print("Non-empty lines:", count)

-- Collect all lines into a table
local lines = {}
for line in io.lines("data.txt") do
  lines[#lines+1] = line
end
print("Total lines:", #lines)

त्वरित जाँच

जब फ़ाइल पॉइंटर पहले से EOF पर हो, तो f:read("a") क्या लौटाता है?

पुनरावृत्ति: फ़ाइलें पढ़ना

सारांश:

  • f:read("a") — पूरी फ़ाइल स्ट्रिंग के रूप में
  • f:read("l") — एक पंक्ति, नई पंक्ति के बिना
  • f:read(n) — ठीक n बाइट
  • f:read("n") — अगली संख्या
  • io.lines(path) — पंक्ति इटरेटर, अपने-आप बंद होता है
  • f:seek() — स्थिति पर जाएँ
शुरुआत निःशुल्क

एआई शिक्षक के साथ Lua सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “फ़ाइल की सामग्री पढ़ना” पाठ निःशुल्क है?

हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “फ़ाइल की सामग्री पढ़ना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“फ़ाइल की सामग्री पढ़ना” में मैं क्या सीखूँगा?

file:read() मेथड से पंक्तियाँ, बाइट और पूरी सामग्री पढ़ें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“फ़ाइल की सामग्री पढ़ना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. io.open से फ़ाइलें खोलना
  2. फ़ाइल की सामग्री पढ़ना
  3. फ़ाइलों में लिखना और सामग्री जोड़ना
  4. फ़ाइलें बंद करना और त्रुटियाँ संभालना
← Lua Academy पर वापस जाएँ