【问题标题】:IOError when trying to open existing files尝试打开现有文件时出现 IOError
【发布时间】:2012-06-03 20:52:20
【问题描述】:

我编写的 Python 程序有一个小问题,该程序用于从特殊文本文件中提取一些信息。循环(下面的代码)需要执行我的函数extract_zcoords() 超过 500 个文件(1 个文件给出一个列表),以便我可以构建数据集。

import os

def extract_zcoord(filename): 
    f = open(filename, 'r')         
    ... # do something with f


### LOOP OVER DIRECTORY 
location = '/Users/spyros/Desktop/3NY8MODELSHUMAN/HomologyModels' 

for filename in os.listdir(location):
    extract_zcoord(filename) 

错误: IOException No such file or directory 是发生的,因此由于某种原因 python 没有访问文件。我检查了目录路径名(位置)和文件权限,它们是正确的(读+写)。当文件确实存在并且路径名正确时,为什么会报告 IOError 的任何想法?

有什么想法可能是错的吗?

【问题讨论】:

  • 谁能想到在指定路径时不总是使用原始字符串的理由?这样做有缺点吗? (暗示这是问题的原因,只是让我考虑尽量减少路径等方面的潜在问题)

标签: python file-io ioerror fileparsing


【解决方案1】:

您需要将目录名和文件名加入一个完整的路径:

location = '/Users/spyros/Desktop/3NY8MODELSHUMAN/HomologyModels' 
for filename in os.listdir(location):
    filename = os.path.join(location, filename)

【讨论】:

  • 谢谢,原来如此简单!
【解决方案2】:

可能你应该在调用时使用 os.path.join

zdata.extend(extract_zcoord(filename))

像这样:

zdata.extend(extract_zcoord(os.path.join(location, filename)))

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 2014-03-11
    • 2013-06-06
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多