Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python标准库中没有读/写文件的函数_Python - Fatal编程技术网

为什么Python标准库中没有读/写文件的函数

为什么Python标准库中没有读/写文件的函数,python,Python,我经常使用下面的两个函数将文件内容读取为字符串,并将字符串写入文件。据我所知,Python标准库中不存在这些函数,我很好奇为什么。具有高级目录和文件操作的标准库模块没有此功能,我确信这是一个明确的设计选择,不在其中。也就是说,我想知道以下几点: 不将其包含在Python标准库中的潜在原因是什么 以这种方式处理文件有什么缺点吗(假设您知道整个文件内容都将加载到内存中) 功能 def read_file(path): with open(path) as f: retur

我经常使用下面的两个函数将文件内容读取为字符串,并将字符串写入文件。据我所知,Python标准库中不存在这些函数,我很好奇为什么。具有高级目录和文件操作的标准库模块没有此功能,我确信这是一个明确的设计选择,不在其中。也就是说,我想知道以下几点:

  • 不将其包含在Python标准库中的潜在原因是什么
  • 以这种方式处理文件有什么缺点吗(假设您知道整个文件内容都将加载到内存中)
功能

def read_file(path):
    with open(path) as f:
        return f.read()

def write_file(path, data):
    with open(path, 'wb') as f:
        return f.write(data)
为了澄清,我发现下面的内容更具可读性

write_file('/tmp/test', 'test')
然后选择以下两个备选方案:

open('/tmp/test', 'wb').write('test')

with open('/tmp/test', 'wb') as f:
    f.write(data)

这些都是一行程序,您不需要为它们提供函数

data = open("filename").read()
open("filename", "w").write(data)
至少在CPython中,在执行这些语句之后,文件将立即关闭,因为您没有保留对file对象的引用。确保在发生异常时关闭文件并不是一个真正的问题,特别是在简单脚本中

在其他Python实现中,如Jython和IronPython,这可能会有更大的问题。如果是,则会出现带有的
(您也可以将其清晰地写在一行上):


如果你发现像你写的那样有帮助函数更清晰,那么一定要写它们;它们很清楚。但是它们几乎不是必需的,大多数Python程序员都不会使用它们。

这些都是一行程序,您不需要为它们提供函数

data = open("filename").read()
open("filename", "w").write(data)
至少在CPython中,在执行这些语句之后,文件将立即关闭,因为您没有保留对file对象的引用。确保在发生异常时关闭文件并不是一个真正的问题,特别是在简单脚本中

在其他Python实现中,如Jython和IronPython,这可能会有更大的问题。如果是,则会出现带有
(您也可以将其清晰地写在一行上):


如果你发现像你写的那样有帮助函数更清晰,那么一定要写它们;它们很清楚。但是它们几乎不是必需的,大多数Python程序员都不会使用它们。

除了它们之外,它们都可以在一行程序中使用,比如@Kindall答案

您的示例传递了许多选项,为特定任务呈现这些选项

def read_file(path):
    with open(path) as f:
        return f.read()
Open需要几个参数

打开(名称[,模式[,缓冲]])

您还可以以多种方式读取文件:

  • 读取
  • readline
  • readlines
  • xreadline
    (对于文件中的行,已弃用并替换为
  • 这只是一个开始。整个模块为您提供了操作文件的方法
根据文件的大小、内容类型以及您想对其执行的操作,您可能需要切换

拥有像您编写的那样的“read()”和“write()”函数对于处理小文本文件很有用,但在其他情况下可能会很麻烦

例如,如果您试图读取一个9GB的日志文件,那么使用您的想法将所有内容读入内存会在大多数当前计算机(具有4-8GB ram)上造成很多问题。如果日志文件是二进制格式的,那么处理数据时就会出现问题


由于通过链接这些命令,您可以使用一行程序轻松地读/写文件,因此,对于我来说,使用另一种更有限的方式来处理文件是毫无意义的。

除了它们都可以在一行程序(如@Kindall answer)中实现之外

您的示例传递了许多选项,为特定任务呈现这些选项

def read_file(path):
    with open(path) as f:
        return f.read()
Open需要几个参数

打开(名称[,模式[,缓冲]])

您还可以以多种方式读取文件:

  • 读取
  • readline
  • readlines
  • xreadline
    (对于文件中的行,已弃用并替换为
  • 这只是一个开始。整个模块为您提供了操作文件的方法
根据文件的大小、内容类型以及您想对其执行的操作,您可能需要切换

拥有像您编写的那样的“read()”和“write()”函数对于处理小文本文件很有用,但在其他情况下可能会很麻烦

例如,如果您试图读取一个9GB的日志文件,那么使用您的想法将所有内容读入内存会在大多数当前计算机(具有4-8GB ram)上造成很多问题。如果日志文件是二进制格式的,那么处理数据时就会出现问题


由于通过链接这些命令,您可以用一行代码轻松地读/写文件,因此,对于我来说,使用另一种更有限的方法来处理文件是毫无意义的。

因为它们既愚蠢又冗余。一个可以让您免于编写一行代码的函数几乎不值得拥有。。。Python经常为了清晰而牺牲简洁性。@IgnacioVazquez Abrams:这应该是一个答案,而不是注释。因为它们愚蠢且冗余。一个能让你免于编写一行代码的函数几乎不值得拥有。。。Python经常为了清晰而牺牲简洁。@IgnacioVazquez Abrams:这应该是一个答案,而不是一个评论。谢谢你清晰礼貌的回答。这就是我想要的。-1我不同意。虽然这是可行的,但我坚持认为它是邪恶的(邪恶不应被视为道德判断,而应被视为强烈的意见)。如果你养成了这个习惯,你会把自己限制在一些小脚本上,而不是打开很多运行在特定Python实现上的文件,这样你就可以按照推荐的方式编写代码,而不用thinkin