【问题标题】:Python open file in write mode IOErrorPython以写入模式打开文件IOError
【发布时间】:2014-02-28 22:18:54
【问题描述】:

我在尝试使用 python 中的 open() 创建文件时收到 IOError,这似乎只发生在单个文件名中。目录肯定存在并授予权限,循环成功创建了大约 1000 个文件。当epic = "CON" 在下面的代码中我收到“没有这样的文件或目录”错误,但它适用于其他值。

f = open('data\\LSE\\%s.csv' % epic.strip(),'w')
f.write(u.read())
f.close()

这可能是种族问题吗?文件的创建速度非常快。

我是 python 新手,所以如果我遗漏了一些明显的东西,道歉!

【问题讨论】:

  • print repr(epic) 打印什么?
  • 'COD'。更奇怪的是,使用控制台, open('data\\LSE\\COD',w) 给出“Bad File Descriptor”,但 CAD、CO、CODD 都可以正常工作。我也尝试在其他目录中测试它并遇到相同的行为
  • open('data\\LSE\\COD.csv',w) 还是 open('data\\LSE\\COD',w)?
  • 啊,抱歉,COD 应该是 CON,这是我遇到问题的字符串
  • Michael,我都试过了(请参阅我的更正,实际上是 CON 对不起),没有文件扩展名它会给出“错误的文件描述符”并给出“没有这样的文件或目录”

标签: python


【解决方案1】:

问题是您在 Windows 上运行此代码,它仍然包含一些 MS-DOS 1.0 的遗留问题。 CON 是控制台设备的特殊名称。您不能将其用作文件名。 MS-DOS 的最早版本不支持目录,也不支持 8.3 文件命名模式的所谓“扩展”。因此,无论目录和扩展名如何,名称都是特殊的。

一些参考资料:


http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx

不要使用以下保留名称作为文件名:

CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 和 LPT9。还要避免这些名称后跟扩展名;例如,不推荐使用 NUL.txt。

【讨论】:

  • 谢谢 dsh,我想我必须更改股票代码文件的命名约定!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
相关资源
最近更新 更多