文件名是否允许包含' /'在他们中?

时间:2018-02-22 04:35:24

标签: python-2.7 operating-system

我对一段Python代码感到困惑:

with open('/dev/null', 'w+') as null:

可能是因为我不了解其他操作系统,但我认为文件名被禁止使用' /'字符。如果是这样,我不明白这是一个有效的命令。

现在我明白在Python中使用open函数时,如果文件存在于当前工作目录以外的目录中,则必须在文件名参数的前面添加路径。但是,这似乎不是这种情况,因为open函数的文件名参数只是' / dev / null /'。是' null'文件名。

这与此有关: https://en.wikipedia.org/wiki/Null_device

"在某些操作系统中,空设备是一个设备文件,它丢弃写入它的所有数据,但报告写操作成功。该设备在Unix和类Unix系统上称为/ dev / null"

1 个答案:

答案 0 :(得分:2)

在Unix系统上,文件名不能包含正斜杠,因为它用作目录分隔符。一个文件的名称不能只包含一个或两个点,因为它们用于"当前目录"和#34;父目录"也是。以正斜杠开头的路径是绝对路径,从根路径一直沿着目录树向下。

在该代码中,它会打开/dev/null,这是一个特殊的字符设备,可以丢弃写入它的所有内容并报告写入成功。在某些情况下,人们可能想要丢弃特定函数的输出,例如subprocess.run。在这种情况下,打开空设备的句柄很有用。