2016-11-10 71 views
0

尝试interneting和检查python3文档,但我似乎无法修复以下 - 我可能只是缺少一个国旗或东西!python3创建/打开文件区分大小写Mac

我想创建和编辑本地目录中的文件。使用区分大小写的文件名的Python:但我有以下行为:

~$ python3 
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> f = open("file.txt", "w") 
>>> f.write("hello\n") 
6 
>>> f.close() 
>>> del f 
>>> f = open("File.txt", "w") 
>>> f.write("BYE\n") 
4 
>>> f.close() 
>>> del f 
>>> quit() 
~$ ls 
Applications Downloads  Movies  Public 
Cloud   File.txt  Music  intel 
Desktop   Jagex   Documents Library 
Documents  Library   Pictures 
~$ cat File.txt 
BYE 
~$ cat file.txt 
cat: file.txt: No such file or directory 

有谁知道在哪里我的文件“file.txt” [用“你好\ N”]文件已走了吗?

谢谢!

Edit1:我使用的是OSX Sierra 10.12.1。

+0

是否使用OS X? –

+0

啊是的 - 对不起,我想补充一点。是的“OSX Sierra 10.12.1”是准确的:) –

回答

0

这不是(直接)与Python有关,而是与操作系统及其文件系统有关。类Unix(例如Linux和BSD)具有严格区分大小写的文件名:file.txtFile.txt是两个不同的文件。另一方面,在Windows上,如果同名的不区分大小写的版本已经存在,它将被打开而不是创建一个新名称。因此,在Windows上,您的代码将重新打开(并且由于w模式而被擦除)相同的文件。我无法访问Mac,因此我不能说是否是相同的情况。

但是,当您使用Python 3.5时,可以使用x模式进行独占创建模式。在这种模式下,如果打开的电话会打开一个现有的文件,您会收到一个错误。

您的代码将变成:

~$ python3 
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> f = open("file.txt", "x") 
>>> f.write("hello\n") 
6 
>>> f.close() 
>>> del f 
>>> f = open("File.txt", "x") # will eventually raise a IOError... 
... 
+0

这不是操作系统,而是文件系统。如果您在Linux上挂载了一个不区分大小写的文件系统(例如FAT32),那么在打开文件时,文件名也会被忽略。苹果[HFS](https://en.wikipedia.org/wiki/HFS_Plus)通常是不区分大小写,但支持区分大小写(可以打开格式化分区时上) – mata

+0

谢谢您的回答:) 我我很高兴这不仅仅是我的一个python编码错误!我的确在运行OSX(塞拉利昂),所以也许这是问题的一部分。 当你按照你的代码Serge,使用“x”选项时,我会按照你的预测提出一个错误。但是,是否没有办法让我创建“file.txt”“和”File.txt“,而不会产生错误,作为单独的对象?还是我必须咬紧牙关,只能使用小写的文件名? –