2014-02-04 4 views
0

Я написал следующий сценарийпитон не может прочитать файл, который существует

#!/usr/bin/env python 
import numpy as np 
import matplotlib.pyplot as plt 

######## 
N = 92 
lookup = 'The forecast spread is' 
    iday_start = 1 
    iday_end  = 1 
    year  = 2013 
    month  = 07 
    extension_type1 = '-RTPSinfl.dat' 
    extension_type2 = 'engl_var_anal.' 
    extension  = 2 
######### Append the files into files 
    for iday in range (iday_start, iday_end+1): 
     day = str(0) + str(iday) 
     for itime in range(0,24,6) : 
      if itime < 12: 
      ihour = str(0) + str(itime) 
     else: 
      ihour = str(itime) 
     if extension == 1 : 
      file = str(year)+str(month) + day + ihour + extension_type1 
      print(file) 
     elif extension == 2 : 
      file = extension_type2 + str(year)+str(month)+day+ihour+'.1.out' 
      print(file)   
#========   
     f = open(file) 
     lines = f.readlines() 
     f.close() 
     with open(file) as myFile: 
      for num, line in enumerate(myFile,1): 
       if lookup in line: 
        print 'found at line:', num 
      num = num+2 
      numN = num + N 
      lrange = range(num,numN) 
      for l in lrange: 
       for ii in range(0,7): 
        nstart = numN + ii * (N+2) + 1 
        lrange = range(nstart,nstart+N) 
        for l in lrange: 
         print lines[l],     
     myFile.close() 

и здесь является сообщением об ошибке

IOError: [Errno 2] No such file or directory: 'engl_var_anal.201370100.1.out' 

Файл engl_var_anal.201370100.1.out делает существует.

+1

Ваш отпечаток повсюду, вы можете его очистить? –

+3

И файл вполне может существовать ** где-то ** на вашем жестком диске, но не в текущем рабочем каталоге скрипта. Вместо этого используйте полный путь. –

+0

@ user3270373: Если вы удовлетворены моим ответом, пожалуйста, примите ответ, нажав галочку слева от ответа. Благодарю. – daveydave400

ответ

1

Python загрузит файл из каталога, в котором запущен скрипт, с NOT с места расположения сценария. Если это не поможет, возможно, вы дадите нам точную команду, которую вы используете, и полный путь, где находится этот файл?

Edit:

Одна вещь, чтобы посмотреть на то, что у вас есть точно такое же количество цифр в имени файла, как ваша программа вывода. Это обычная ошибка при печати цифр в строках. Похоже, вы ожидаете, что ваш месяц будет 2 цифры «07», но ваше имя выходного файла имеет только 1. Дважды проверьте это.

Если вам нужно 2 цифры сделать какой-то строки форматирования, как:

file = extension_type2 + "%04d%02d%02d%04d" % (year, month, day, ihour) + ".1.out" 

Или использовать объекты даты-времени и STRFTIME для форматирования даты/времени.

Если вы cd /dir/with/files_and_script, а затем запустить ls -l (предполагая, что Линукс оболочки), и вы увидите "test.py" и "engl_var_anal.201370100.1.out", а затем запустить python ... код ... execfile("test.py") ... это должно сработать.

+0

Спасибо. Я запускаю сценарий и загружаю файл из того же места. Я использую следующую команду execfile ('test.py') в интерпретаторе python2.7. – user3270373

+0

@ user3270373: либо ваш рабочий каталог не так, как вы думаете (попробуйте «import os; print (os.getcwd())», файл на самом деле отсутствует или у вас есть серьезная проблема, когда ваша файловая система сообщает, что файлы не существуют, когда они это делают. Первые 2 варианта кажутся наиболее вероятными. – geoffspear

+0

@ user3270373 Взгляните на мое редактирование. Думаю, у вас может быть не так много цифр в имени файла, как вы ожидаете. – daveydave400

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