为什么调用 file write() 方法不起作用?

M. *_*yer 2 python

我有一些 Python3 代码,可以在写入模式下打开一个文件,向其中写入一些内容,然后关闭该文件。文件名是一个int. 由于某种原因,代码无法按预期工作。当我运行该f.write()语句时,a6将打印到屏幕上。当我运行该f.close()语句时,应该写入的字符串被打印到屏幕上。

>>> f = open(2, 'w')
>>> f.write('FooBar')
6
>>> f.close()
FooBar>>>
>>>
Run Code Online (Sandbox Code Playgroud)

我检查了运行此命令的目录,但未2创建文件(名为 )。谁能解释一下发生了什么事吗?我怀疑这与文件名有关int,但我不确定。

AKX*_*AKX 5

您正在传递一个文件描述符编号(2 表示 stderr)。

  1. 请参阅的文档open(),重点是我的:

    file是一个类似路径的对象,给出要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符

  2. 至于为什么之前没有发生任何事情.close()(或者.flush():你的流是行缓冲的,并且你没有写换行符。

    f = open(2, 'wb', buffering=0)
    
    Run Code Online (Sandbox Code Playgroud)

    禁用缓冲。

如果您希望写入名为 的文件'2',则必须传递一个字符串。

f = open('2', 'w')
Run Code Online (Sandbox Code Playgroud)

  • 您可能还想解决为什么显示“6”以响应“f.write()”调用。当然,这就是调用写入的字符数,即“f.write()”返回的内容。在本例中,它是字符串“FooBar”的长度。 (2认同)