आमतौर पर आप इनपुट फ़ाइल खोलते हैं और गैर-रिक्त पंक्तियों को दूसरी फ़ाइल में लिखते हैं:
with open('file.tsv') as infile, open('filtered_file.tsv', 'w') as outfile:
for line in infile:
if line.strip():
outfile.write(line)
यदि आप फ़ाइल को जगह में फ़िल्टर करना चाहते हैं तो आप FileInput
. का उपयोग कर सकते हैं inplace
. के साथ विकल्प:
import fileinput
for line in fileinput.FileInput("infile", inplace=1):
if line.strip():
print line
हालांकि, यह एक मध्यवर्ती फ़ाइल का उपयोग करता है और कम डिस्क स्थान स्थितियों में काम नहीं कर सकता है।
कोई अतिरिक्त डिस्क स्थान आवंटित किए बिना फ़ाइल को इनप्लेस फ़िल्टर करने के लिए आप कुछ इस तरह का प्रयास कर सकते हैं:
with open('file.tsv', 'r+') as infile:
read_pos = write_pos = 0
line = infile.readline()
while line:
read_pos += len(line)
if line.strip():
infile.seek(write_pos)
infile.write(line)
write_pos += len(line)
infile.seek(read_pos)
line = infile.readline()
# update file size to the new, possibly reduced, size
infile.truncate(write_pos)