python-3.x 什么样的 Package 器代码允许'write'而不是'w'作为标志,使I/O更加可读和用户友好?[已关闭]

amrnrhlw  于 2023-03-09  发布在  Python
关注(0)|答案(1)|浏览(94)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

昨天关门了。
Improve this question
假设有些学生难以理解从文件阅读或写入文件时使用的可选标志。

file = open("data.txt", "r")
file = open("data.txt", "r+")
file = open("data.txt", "rb+")
file = open("data.txt", "w")
file = open("data.txt", "wb")
file = open("data.txt", "w+")
file = open("data.txt", "wb+")
file = open("data.txt", "a")
file = open("data.txt", "ab")
file = open("data.txt", "a+")
file = open("data.txt", "ab+")

我的问题是,什么样的代码会使文件IO更加用户友好?
以下是“详细”标志。
最终用户应该能够键入其中一个详细标志的大多数子序列:

  • "read"
  • "read +"
  • "+ read"
  • "read binary +"
  • "read + binary"
  • "binary read +"
  • "binary + read"
  • "+ read binary"
  • "+ binary read"
  • "read + binary "
  • "read binary +"
  • x1米11米1x
  • "write binary"
  • "binary write"
  • "write +"
  • "+ write"
  • "write binary +"
  • "write + binary"
  • "binary write +"
  • "binary + write"
  • x1米20英寸1x
  • "+ binary write"
  • "append"
  • "append binary"
  • "binary append"
  • "+ append"
  • "append binary +"
  • "append + binary"
  • "binary append +"
  • "binary + append"
  • x1米30英寸1x
  • "+ binary append"

TRIE (information retrieval tree)可能会有帮助。
我们总是喜欢最短的详细标志。
因此,rd bin将匹配read binary而不是read binary +
read binary是两者中较短的一个。
read binary +是两个字符串中较长的一个
也许有一天,下面的所有代码行都会表现出相同的运行时行为:

import sopen

file = sopen("data.txt", "wb")
file = sopen("data.txt", "write binary")
file = sopen("data.txt", "writeb")
file = sopen("data.txt", "wrtb")

您应该假设:
| 一般情况|示例|
| - ------|- ------|
| 最终用户往往不担心大写字母和小写字母之间的区别。|最终用户可以键入w而不是W|
| 最终用户可以使用空格字符(``)|最终用户可以键入w b而不是wb|
| 最终用户可能会出现阅读障碍|最终用户可以键入bw而不是wb|
| 中间的加号(+)不明确|write + read匹配两个字符串write readwrite read +|
出于向后兼容的目的,最终用户必须仍然能够键入旧文本,如"wb",并使其仍然能够正常工作。
| 一般情况|示例|
| - ------|- ------|
| 如果输入字符串无效,则输出为空列表[]|如果输入是"I wuv u",则输出将是空列表[]|
| 如果输入字符串有效,则输出可能是包含单个字符串的列表,该字符串带有传统的文件I/O标志|如果输入为wrt bin,则输出应为["wb"]|
| 如果输入是多个详细文件I/O标志的合适候选项,则输出将是两个或更多字符串的列表。|如果输入为e,则输出应为所有标志的列表|

tmb3ates

tmb3ates1#

您可以创建一个包含所有已知替代拼写的Map的字典:

mydict = {
    "read" : "r",
    "read +": "r+",
    "+ read": "r+",
    ... etc
}

然后在调用open()时引用此字典:

file = open("file.txt", mydict["read"])

或者,如果愿意,可以创建自己的myopen()函数来隐藏字典访问:

file = myopen("file.txt", "read")

......但我不得不说,总的来说,这是一个糟糕的想法。编程需要注意细节。任何人谁不能做到这一点,将有重大问题。这将只是一个非常肤浅的创可贴上的真实的问题。

相关问题