已关闭。此问题为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 read
和write read +
|
出于向后兼容的目的,最终用户必须仍然能够键入旧文本,如"wb"
,并使其仍然能够正常工作。
| 一般情况|示例|
| - ------|- ------|
| 如果输入字符串无效,则输出为空列表[]
|如果输入是"I wuv u"
,则输出将是空列表[]
|
| 如果输入字符串有效,则输出可能是包含单个字符串的列表,该字符串带有传统的文件I/O标志|如果输入为wrt bin
,则输出应为["wb"]
|
| 如果输入是多个详细文件I/O标志的合适候选项,则输出将是两个或更多字符串的列表。|如果输入为e
,则输出应为所有标志的列表|
1条答案
按热度按时间tmb3ates1#
您可以创建一个包含所有已知替代拼写的Map的字典:
然后在调用
open()
时引用此字典:或者,如果愿意,可以创建自己的
myopen()
函数来隐藏字典访问:......但我不得不说,总的来说,这是一个糟糕的想法。编程需要注意细节。任何人谁不能做到这一点,将有重大问题。这将只是一个非常肤浅的创可贴上的真实的问题。