Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะรับบรรทัดไฟล์ที่เปิดอยู่ในปัจจุบันใน Python ได้อย่างไร


Python ไม่สนับสนุนสิ่งนี้โดยตรง คุณสามารถเขียนคลาส wrapper ได้ ตัวอย่างเช่น

class FileLineWrapper(object):
    def __init__(self, file):
        self.f = file
        self.curr_line = 0
    def close(self):
        return self.f.close()
    def readline(self):
        self.curr_line += 1
        return self.f.readline()
    # to allow using in 'with' statements
    def __enter__(self):
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        self.close()

และใช้โค้ดด้านบนเป็น:

f = FileLineWrapper(open("my_file", "r"))
f.readline()
print(f.line)

สิ่งนี้จะให้ผลลัพธ์:1

มีวิธีอื่นในการติดตามหมายเลขบรรทัดหากคุณใช้วิธีการแบบอ่านอย่างเดียวเท่านั้น ตัวอย่างเช่น

f=open("my_file", "r")
for line_no, line in enumerate(f):
    print line_no
f.close()