Errno 9 Python中错误的文件描述符使用文件.close()功能

2024-10-08 20:22:52 发布

您现在位置:Python中文网/ 问答频道 /正文

每次遇到错误时都运行以下代码:

“OSError:[Errno 9]错误的文件描述符”

在f.flush()和f.close()行。注释掉f.flush()和f.close()行似乎可以修复此错误,但我仍然不明白为什么会出现问题。在

import numpy as np
#import math
import os
import matplotlib.pyplot as plt
import networkx as nex

def creator(self):      #Creating an Adjaceny Matrix From Given CSV
        print("AdjacenyList\%s" %(self.string))
        if(os.path.isdir("AdjacenyList\%s" %(self.string))==False):
            os.mkdir("AdjacenyList\%s" %(self.string))
        os.chdir("AdjacenyList\%s" %(self.string))
        f=open("%s_AdjList.txt" %(self.string), 'w')

        for i in range(0, len(self.foodweb)):
            m=0
            f.write("%d" %(i))
            for j in self.foodweb[i,:]:
                if j>0:
                    f.write(" %d" %(m))
                m+=1
            f.write("\n")
        f.flush()
        f.close()

另外,当我在“rb”模式下打开另一个文件(在同一个脚本中)并在读取后刷新并关闭它时,没有问题。任何帮助都将不胜感激。在

^{pr2}$

Tags: 文件inimportselfforclosestringif
2条回答

这只是对junior_software答案的补充


始终使用上下文管理器进行文件处理。它只是在打开和关闭静态内存的数据流方面更安全。在

def creator(self):      #Creating an Adjaceny Matrix From Given CSV
    print("AdjacenyList\%s" %(self.string))
    if(os.path.isdir("AdjacenyList\%s" %(self.string))==False):
         os.mkdir("AdjacenyList\%s" %(self.string))
    os.chdir("AdjacenyList\%s" %(self.string))

    with open("%s_AdjList.txt" %(self.string), 'w') as f:
        for i in range(0, len(self.foodweb)):
            m=0
            f.write("%d" %(i))
            for j in self.foodweb[i,:]:
                if j>0:
                    f.write(" %d" %(m))
                m+=1
            f.write("\n")

尝试打开完整路径

"AdjacenyList\%s\s_AdjList.txt" %(self.string)

您缺少\请尝试f = open("\%s_AdjList.txt" % (self.string), 'w')

你能把"AdjacenyList\%s" %(self.string)和开放目录"\%s_AdjList.txt" % (self.string)提取到变量并打印出来吗?并验证它们是否相同?(不包括文件名)?在

相关问题 更多 >

    热门问题