Python使用open(w+)时出现FileNotFoundError错误

22
我尝试写文件时出现了FileNotFoundError错误。 这是我的代码:

def save_txt_individual_tracks(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()

我称之为这样:

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

出现了以下错误:

FileNotFoundError: [Errno 2] 找不到指定的文件: 'E:/phoneTracks/TA92903URN7ff/0.txt'

我在 E 盘创建了 phoneTracks 文件夹。我对使用带有模式为 'w+'open() 函数来创建新文件感到困惑。为什么会出现 FileNotFoundError 错误?我该怎么解决?

我正在运行 python3.4.3,并且使用 windows 7 操作系统。


你好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是名为“我可以在这里问什么话题?”和“我应该避免提出哪些类型的问题?”的部分。更重要的是,请阅读Stack Overflow问题清单。你可能还想了解最小完整可验证示例 - Morgan Thrapp
感谢@poke的帮助。我会阅读Morgan Thrapp列出的这些有用的技巧。 - CHEN
1个回答

40

由于目录 - 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 save_txt_individual_tracks(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)”。 - CHEN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接