คุณจะได้รับเฉพาะบรรทัดแรกของไฟล์เป็นสตริงด้วย Python อย่างไร
คุณจะได้รับเฉพาะบรรทัดแรกของไฟล์เป็นสตริงด้วย Python อย่างไร
คำตอบ:
ใช้.readline()
วิธีการ ( Python 2 เอกสาร , Python 3 เอกสาร ):
with open('myfile.txt') as f:
first_line = f.readline()
หมายเหตุบางส่วน:
f.readline()
จะมีบรรทัดใหม่ต่อท้าย คุณอาจต้องการใช้f.readline().strip()
แทนการขึ้นบรรทัดใหม่with
คำสั่งโดยอัตโนมัติปิดไฟล์อีกครั้งเมื่อปลายบล็อกwith
คำสั่งใช้งานได้เฉพาะในหลาม 2.5 ขึ้นไปและในหลาม 2.5 คุณจำเป็นต้องใช้from __future__ import with_statement
mod_wsgi
)
infile = open('filename.txt', 'r')
firstLine = infile.readline()
with
จะดีกว่า
fline=open("myfile").readline().rstrip()
rstrip()
ลบอักขระขึ้นบรรทัดใหม่
สิ่งนี้ควรทำ:
f = open('myfile.txt')
first = f.readline()
หากต้องการกลับไปที่จุดเริ่มต้นของไฟล์ที่เปิดอยู่จากนั้นส่งคืนบรรทัดแรกให้ทำดังนี้
my_file.seek(0)
first_line = my_file.readline()
มีคำตอบอื่น ๆ อีกมากมายที่นี่ แต่เพื่อตอบคำถามที่คุณถามอย่างแม่นยำ (ก่อนที่ @MarkAmery จะไปและแก้ไขคำถามเดิมและเปลี่ยนความหมาย):
>>> f = open('myfile.txt')
>>> data = f.read()
>>> # I'm assuming you had the above before asking the question
>>> first_line = data.split('\n', 1)[0]
กล่าวอีกนัยหนึ่งถ้าคุณได้อ่านไฟล์ (ตามที่คุณพูด) และมีบล็อกข้อมูลขนาดใหญ่อยู่ในหน่วยความจำจากนั้นเพื่อให้ได้บรรทัดแรกจากมันได้อย่างมีประสิทธิภาพให้ทำการแบ่ง () กับอักขระขึ้นบรรทัดใหม่หนึ่งครั้ง เท่านั้นและใช้องค์ประกอบแรกจากรายการผลลัพธ์
โปรดทราบว่านี่ไม่รวม\n
อักขระที่ท้ายบรรทัด แต่ฉันสมมติว่าคุณไม่ต้องการมันอยู่ดี (และไฟล์บรรทัดเดียวอาจไม่มีเลย) โปรดทราบว่าถึงแม้ว่ามันจะค่อนข้างสั้นและเร็ว แต่มันก็ทำสำเนาข้อมูลไว้ดังนั้นสำหรับหน่วยความจำขนาดใหญ่มากคุณอาจไม่ได้พิจารณาว่า "มีประสิทธิภาพ" เช่นเคยมันขึ้นอยู่กับ ...
.read()
จะต้องเรียกก่อน
f1 = open("input1.txt", "r")
print(f1.readline())