حذف خطوط خالی فایل ها در پایتون

سلام
من میخام تو یه فایل تکست خط های که خالین رو حذف کنم در واقع اون خط هایی که n\ رو دارند بجاش هیچی بیاد(خط هایی ک فقط n\ دارند).
این کد رو میزنم و حذف نمی کنه:

for x in file:
  if x=='\n':
    (f.tell()-1  )f.seek
  f.write('')

لطفا عنوان بهتری انتخاب کنین و برای کدی که گذاشتین از markdown استفاده کنین

1 Like

کد زیر یک متن می خونه و داخل یک لیست قرار میده و از لیست n\ را جدا کرده و داخل همان فایل ذخیره می کند , چون از (" ")strip استفاده کردم خط هایی که n\ و space هستن نیز حذف می شوند
فقط این کد برای فایل هایی که تعداد خطایی زیادی داشته باشد مناسب نیست

with open("text.txt", 'r') as f:
    text = f.readlines()

result = []
for i in text:
    if i.strip(" ") != "\n":
        result.append(i)
        
with open("text.txt", 'w') as f:
    f.writelines(result)

@behnamgnu جان روش شما کار میکنه اما یکمی پیچیدست و اتفاقات غیر ضروری توش میوفته، از جمله درست کردن لیست از همه خط های خالی و غیر خالی و بعد هم درست کردن لیست جدید result و بازم دوباره mutate کردن پی در پی result.
نظرت در مورد راه حل پایین چیه که البته یکمی هم “فانکشنال” هست؟ فکر کنم بتونی روش منو بهتر و کاملتر کنی، مثلا؛ با اضافه کردن قابلیت پردازش فایل های خیلی بزرگتر با استفاده از batch processing و بافر درست کردن برای فایل و از اینجور چیزا.

file = "./file.txt"

with open(file, "r") as f:
  lines = filter(str.strip, f.readlines())

with open(file, "w") as f:
  f.writelines(lines)

Python filter function

1 Like

ممنون @toomaj عزیز
کد شما رو خوندم و صد البته کد شما بهینه تر , خواناتر و بهتر هستش و خیلی چیزهای ازش یاد گرفتم
روی فایل های بزرگتر هم که فرمودید کار می کنم و نتیجه زیر همین پست قرار می دم

1 Like