Python 文件生成没有限制?

Python 文件生成没有限制?,python,Python,python中的代码中可以创建多少个文件是没有限制的,就像有递归限制一样?我这里有一些代码 each = 0 while True: with open('filenamewhtever'+str(each)+'.txt', 'a') as file: file.write(str(each)) each += 1 虽然它很快就填满了文件夹中的大量内存,但它似乎工作得很好。如果不检查,这可能会使我的电脑崩溃吗?此外,编译器不应该有一个故障保护开关来防止这种情况发

python中的代码中可以创建多少个文件是没有限制的,就像有递归限制一样?我这里有一些代码

each = 0
while True:
    with open('filenamewhtever'+str(each)+'.txt', 'a') as file:
        file.write(str(each))
    each += 1

虽然它很快就填满了文件夹中的大量内存,但它似乎工作得很好。如果不检查,这可能会使我的电脑崩溃吗?此外,编译器不应该有一个故障保护开关来防止这种情况发生吗?

通常操作系统会对您可以同时打开的文件数量进行限制。但是由于
with
语句在您编写完每个文件后关闭它,因此您不会遇到此限制

文件系统还可能对单个目录中的文件数量施加限制。您可能会看到某些操作(如列出文件)变得很慢,甚至在您接近该限制之前


最后,您显然受到磁盘空间的限制。

为什么编译器会在代码编译后很长时间内对您可以执行的操作设置故障保护?编译器只能验证语法;它不能阻止您在代码中做愚蠢的事情。编译器只是检查以确保您的代码在语法上是正确的-他们不能检查以确保您的代码中没有逻辑错误。这是程序员的工作。此外,文件夹不使用内存。文件夹的内容是使用磁盘空间的文件或文件夹。它们之间有一个显著的区别,反过来说,开放文件限制是操作系统级的特性,而不是Python非常在意的特性。当操作系统确定您已经打开了足够多的文件时,当低级Python/C代码向shell请求文件时,它不会给您一个句柄。它不会请求shell,而是请求内核(通常通过libc)。