【问题标题】:Python using open (w+) FileNotFoundErrorPython 使用 open (w+) FileNotFoundError
【发布时间】:2015-07-14 18:15:48
【问题描述】:
  1. 创建函数saveTxtIndividualTracks(track,folder,i)。基于python3.4.3和windows 7:

    def saveTxtIndividualTracks(track,folder,i):
        f = open(folder+str(i)+'.txt','w+')
            for line in track:
                l=str(line[0])+','+str(line[1])+','+str(line[2])+'\n'
            f.write(l)
        f.close()
    
  2. 使用函数:

    saveTxtIndividualTracks(new,'E:/phoneTracks/'+track_name+'/',i)
    

当我运行代码时,我得到了这个错误:

FileNotFoundError: [Errno 2] 没有这样的文件或目录:'E:/phoneTracks/TA92903URN7ff/0.txt'

我在 E 中创建了文件夹 phoneTracks。我将 open() 函数与用于创建新文件的模式 'w+' 混淆了。为什么我会收到 FileNotFoundError?我能做些什么来解决它?

【问题讨论】:

标签: python


【解决方案1】:

您收到错误是因为目录 - E:/phoneTracks/TA92903URN7ff/ 不存在。

显示此错误的示例 -

In [57]: open('blah/abcd.txt','w+')
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-57-46a07d4a5d18> in <module>()
----> 1 open('blah/abcd.txt','w+')

FileNotFoundError: [Errno 2] No such file or directory: 'blah/abcd.txt'

我的代码出错,因为目录blah/ 不存在。

如果目录 - TA92903URN7ff/ 是常量,请尝试创建它然后运行。如果它不是常量,你可以检查os.path.exists来检查目录是否存在,如果不存在,使用os.mkdir创建一个。

例子-

import os, os.path
def saveTxtIndividualTracks(track,folder,i):
    if not os.path.exists(folder):
         os.mkdir(folder)
    elif not os.path.isdir(folder):
         return #you may want to throw some error or so.
    f = open(os.path.join(folder, str(i)+'.txt'),'w+')
        for line in track:
            l=str(line[0])+','+str(line[1])+','+str(line[2])+'\n'
        f.write(l)
    f.close()

此外,您应该考虑使用os.path.join 来连接路径,而不是使用字符串连接。并且还使用 with 语句将文件打开为 - with open(os.path.join(folder, str(i)+'.txt'),'w+') as f: ,这样一旦 with 块结束,文件将自动关闭。

【讨论】:

  • 非常感谢@Anand S Kumar。目录“TA92903URN7ff”是不变的。我在使用 'os.path.join' 后解决了这个问题。顺便说一句,我将 'foldermstr(i)' 更改为 'folder+str(i)'。
  • 应该是 folder,str(i) 。另外,如果有帮助,请点击答案左侧的勾号接受答案,这将对社区有所帮助。
猜你喜欢
  • 1970-01-01
  • 2017-03-31
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2017-04-21
相关资源
最近更新 更多