เหตุใดโหมดการขึ้นบรรทัดใหม่แบบสากลจึงเลิกใช้ใน Python


26

ฉันเพิ่งสังเกตเห็นว่าคุณสมบัติการขึ้นบรรทัดใหม่สากลของการดำเนินการด้านไฟล์ดูเหมือนจะใกล้หมดแล้ว

เอกสารประกอบสำหรับ Python 3.5 open's modeพารามิเตอร์ที่บ่งชี้ว่ามันเลิกใช้:

'U' โหมด newlines สากล (คัดค้าน)

อย่างน้อยที่สุดกลับเป็น Python 3.2 openมีคำเตือน "ความเข้ากันได้ย้อนหลังเท่านั้น" ที่คล้ายกันเมื่อบันทึกการใช้modeอาร์กิวเมนต์:

'U' โหมดการขึ้นบรรทัดใหม่แบบสากล (สำหรับความเข้ากันได้แบบย้อนกลับไม่ควรใช้ในรหัสใหม่)

แม้จะอยู่ใน Python 2.7 io.openเป็นคำเตือนที่คล้ายกันจะอยู่ในเอกสารของ

เหตุผลนี้คืออะไร


2
ตรรกะที่อยู่เบื้องหลังเรื่องนี้ค่อนข้างง่าย มันถือว่า "Pythonic" มากกว่าที่จะมีชื่อสิ่งต่าง ๆ มากกว่าสิ่งที่ไม่มีชื่อ ดังนั้นคุณใช้พารามิเตอร์ที่มีชื่อมากกว่าธงตัวละคร แนวคิดการตั้งค่าสถานะเป็นสิ่งที่เหลืออยู่มากของการนำ C ไปใช้ของ Python และเป็นเรื่องเล็กน้อยที่สงสัยว่าจะถูกกำจัดออกไป
วิศวกรโลก

เนื่องจากไฟล์ถูกเปิดในโหมดบรรทัดใหม่สากลตามค่าเริ่มต้น
บอริส

คำตอบ:


37

open()ฟังก์ชั่นในห้องสมุดหลาม 3 มีnewlineการโต้แย้ง การตั้งค่าให้Noneเปิดใช้งานบรรทัดใหม่สากล นี่เป็นวิธีที่ได้รับการยอมรับในการแสดงการmode='U'โต้แย้งซ้ำซ้อน

ใช้newline=Noneเพื่อเปิดใช้งานโหมดบรรทัดใหม่สากล (นี่คือค่าเริ่มต้น)


5
ดูเหมือนว่าฉันเข้าใจผิด ฉันอ่านมันโดยบอกว่าบรรทัดใหม่สากลโดยทั่วไปนั้นเลิกใช้แล้วไม่ใช่แค่ตัวละครในโหมด ขอบคุณที่ล้างข้อมูล
jpmc26

6

หลังจากสะดุดคำถามนี้ฉันได้อัปเดตเอกสารให้ชัดเจนเกี่ยวกับสิ่งที่เกิดขึ้น ( https://github.com/python/cpython/pull/11646/files )

รายการตารางที่คลุมเครือสับสน'U'นั้นหายไปและมีย่อหน้าอีกหนึ่งย่อหน้าที่ระบุว่า:

มีอักขระโหมดเพิ่มเติมที่อนุญาต'U'ซึ่งไม่มีผลกระทบใด ๆ อีกต่อไปและถือว่าเลิกใช้แล้ว ก่อนหน้านี้เปิดใช้งาน: คำ: universal newlinesในโหมดข้อความซึ่งกลายเป็นพฤติกรรมเริ่มต้นใน Python 3.0 อ้างถึงเอกสารประกอบของnewline <open-newline-parameter>พารามิเตอร์: ref: สำหรับรายละเอียดเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.