在Python(或Mac OS)中:两个不同的文件被识别为相同的文件并被重写

时间:2012-07-01 09:52:38

标签: python macos unix

问题的简化描述,我有:

dir和文件结构:

./top.py
./Task/Task.py   (was deleted and then renamed as:)
./Task/task.py

top.py导入task.py。但是当我运行top.py时,我发现task.py自动更改为Task.py

为什么会这样?

(我在Mac OS 10.6上使用mvim作为编辑器。)

2 个答案:

答案 0 :(得分:3)

Mac OS X的默认文件系统不区分大小写,但保留大小写,正如Charles所说(此文件系统称为Mac OS Extended,或HFS Plus,默认情况下配置为不区分大小写)。实际上,./Task/Task.py和 ./Task/task.py是相同的文件(例如,您可以在Python中读取带open('task.py')的Task.py),但创建文件时使用的名称是与原案保持一致。

如果你真的需要区分Task.py和task.py,你可能想要创建一个区分大小写的磁盘映像并从中工作(这个问题在网上是discussed)。

答案 1 :(得分:1)

OSX上的文件大小写将保留为最初创建的文件。因此mv Task.py task.py将不起作用。如果您希望重命名文件,通常需要先将其重命名为其他内容。您可以通过执行以下操作在命令行执行此操作:

cd Task
mv Task.py temp.py
mv temp.py task.py

P.S。如果您的文件受git版本控制,则会变得更加复杂。