2015-07-14 9 views
1
  1. Создание функциональных saveTxtIndividualTracks (трек, папку, я) .Based на python3.4.3 и Windows 7:Python с использованием открытых (ш +) FileNotFoundError

    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] No such file or directory: 'E:/phoneTracks/TA92903URN7ff/0.txt'

Я создал папку phoneTracks в E. И я смущен open() Функция с режимом 'w+', который используется для создания нового файла. Почему я получаю файл FileNotFoundError? Что я могу сделать, чтобы исправить это?

+0

Добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать страницу справки, особенно разделы с названием [«Какие темы можно задать здесь?»] (Http://stackoverflow.com/help/on-topic) и [«Какие типы вопросов я должен не спрашивать? "] (http://stackoverflow.com/help/dont-ask). И что еще более важно, прочитайте [контрольный список вопросов переполнения стека] (http://meta.stackexchange.com/q/156810/204922). Вы также можете узнать о [Минимальных, Полных и Подтверждаемых примерах] (http://stackoverflow.com/help/mcve). –

+0

Спасибо @poke за вашу помощь. И я прочитаю эти полезные советы, перечисленные Morgan Thrapp. – CHEN

ответ

2

Вы получаете сообщение об ошибке, поскольку в каталоге - 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' 

Got ошибка в моем коде, поскольку каталог 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(foldermstr(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(foldermstr(i)+'.txt'),'w+') as f:, таким образом, файл будет автоматически закрыт после завершения работы with.

+0

Большое спасибо @Anand S Kumar. Каталог - TA92903URN7ff 'является постоянным. Я исправил проблему после использования «os.path.join». Кстати, я меняю 'foldermstr (i)' на 'folder + str (i)'. – CHEN

+0

это должна быть 'папка, str (i)'. Кроме того, пожалуйста, примите ответ, если это было полезно, щелкнув галочку в левой части ответа, это было бы полезно для сообщества. –

Смежные вопросы